刻意抽象

主要观点:

  • 模块是创建程序家族的方式,可隐藏设计决策,避免后续决策依赖可能改变的决策。
  • 好产品并非由功能构建,意义源于无意义细节的交互,计算机也是如此。
  • 基于流程图的设计常见但有缺陷,应从已知和通用的核心开始进行内向外设计,避免基于用户需求等易变因素设计。
  • 内向外设计有助于有用的模块化,可避免过度验证逻辑,抽象有危险也需正确使用。

关键信息:

  • 模块可隐藏实现或设计决策,流程图设计易锁定可能改变的决策且接口僵化。
  • 好产品功能从组件间交互产生,计算机指令自身无意义,意义由高层过程赋予。
  • 内向外设计先从已知核心逐渐增加便利性,可应对需求变化,如模拟纸牌游戏的示例。
  • 抽象可增加便利性但会降低底层操作的能力,需谨慎使用。

重要细节:

  • 汽车运输功能源于各部件交互,手表时间告知功能由人解读指针产生。
  • 流程图设计吸引点包括符合人类做事方式、易写初版程序、小规模适用。
  • 内向外设计可能是自上而下或自下而上,取决于高低层部分。
  • 纸牌游戏示例中从通用的 Card、Player 等开始,通过抽象逐步构建不同游戏规则,隐藏具体规则,可添加新卡类型而不影响其他代码。
阅读 15
0 条评论