• 利用线框图表达功能需求

如何开始项目的第一轮开发。通常在这一阶段,绘制线框图非常有帮助。你可以通过线框图向大家解释待开发应用的基本结构,同时让大家都了解需要完成什么工作,以免因过度关注技术细节而迷失了大方向。

  • 忠告与提醒
    .描述问题的原始资料一般都是零散的语句、示例和参考材料。为了理解这些资料,你需要记笔记,排除噪声信息,只留下最关键的细节。
    · 每个问题的背后都有一堆简单的子问题,你早已知道如何解决它们。要将问题不断拆分,直到你能辩认出构成它的子问题为止。
    · 难题由很多活动部分组成。先观察各个部分如何联系在一起,而不要管具体的实现细节。在写代码之前,先用纸笔解决部分问题。
    · 在无效数据集上运用有效规则可能会得到难以调试的混乱结果。不要假设输入数据集的格式正确。在处理任何数据集之前,都要预先检查,以避免出现“垃圾进、垃圾出”的情况。

  • 自底向上的设计
    从实现最小化功能入手,自底向上进行系统设计的一个难点是将对象之间的纽带解开,以便一小部分一小部分地进行实现,而不是一次实现一整块。这个技能非常重要,因为它有助于实现增量式设计。
    推迟决策:推迟决策确实是自底向上设计的重要部分。过早提取对象,然后尝试去想象未来的使用情况,可能导致接口变得乱七八糟;一旦考虑实际需求,就能更轻松的进行接口设计。

  • 自底向上与自顶向下的取舍
    自顶向下的设计方法中,你一开始就会考虑可支持的机器类型,然后再去创建满足这些类型的抽象层。这样做可以让系统变得更容易集成,但对于简单情况而言,可能会让代码过于复杂,因为需要提前做更多的规划。
    在实际应用中,自底向上和自顶向下是相辅相成的。自底向上的设计方法有利于发掘新的设计理念,同时让设计保持简洁。当你遭遇死胡同或碰到难点时,自顶向下的设计方法可以帮助你从整体上思考问题,将事物之间的联系统一起来。两种设计方法并非水火不容,它们只是用途不同。