读《代码之外的功夫:程序员精进之路》

利用线框图表达功能需求

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

忠告与提醒

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

自底向上的设计

从实现最小化功能入手,自底向上进行系统设计的一个难点是将对象之间的纽带解开,以便一小部分一小部分地进行实现,而不是一次实现一整块。这个技能非常重要,因为它有助于实现增量式设计。

推迟决策:推迟决策确实是自底向上设计的重要部分。过早提取对象,然后尝试去想象未来的使用情况,可能导致接口变得乱七八糟;一旦考虑实际需求,就能更轻松的进行接口设计。

自底向上与自顶向下的取舍

自顶向下的设计方法中,你一开始就会考虑可支持的机器类型,然后再去创建满足这些类型的抽象层。这样做可以让系统变得更容易集成,但对于简单情况而言,可能会让代码过于复杂,因为需要提前做更多的规划。

在实际应用中,自底向上和自顶向下是相辅相成的。自底向上的设计方法有利于发掘新的设计理念,同时让设计保持简洁。当你遭遇死胡同或碰到难点时,自顶向下的设计方法可以帮助你从整体上思考问题,将事物之间的联系统一起来。两种设计方法并非水火不容,它们只是用途不同。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值