《代码大全》第 5 章:软件架构中的设计

488 阅读2分钟

好的高层次设计能提供一个可以稳妥容纳多个较低层次设计的结构。

设计是一个 "Wicked Problem" – 你必须把这个问题 "解决" 一遍以便能够明确地定义它,然后再次解决该问题,从而形成一个可行的方案。

软件设计的最重要目的是管理复杂度。有两类复杂度:

  • 本质的:一件事物必须具备,不具备就不再是该事物的属性。比如业务逻辑。
  • 偶然的:碰巧具有的属性。比如集成环境,编程工具等等。

理想的设计特征:

  • 最小的复杂度。要避免做出“聪明的”设计。因为“聪明的”设计往往都是难以理解的。如果你设计的方案不能让你在专注于程序的一部分时安心地忽视其他部分的话,这一设计就没什么作用了。
  • 易于维护
  • 松散耦合
  • 可扩展性
  • 可重用性
  • 高扇入。高扇入就是说让大量的类使用某个给定的类。这意味着设计出的系统很好地利用了在较低层次上的工具类。
  • 低扇出。低扇出就是说让一个类里少量或适中(小于7个)地使用其他的类。
  • 可移植性
  • 精简性。伏尔泰曾说,一本书的完成,不在它不能加入任何内容的时候,而在不能删去任何内容的时候。

"你在应用某种设计方法时越教条化,你所能解决的现实问题就越少"。请把设计看成是一个险恶的、杂乱的和启发式的过程,不要停留于你所想到的第一套解决方案,而是去寻找合作,探求简洁性,在需要的时候做出原型,迭代,并进一步迭代。你将对自己的设计成果感到满意。