代码大全-02-创建高质量的代码-05-软件构建中的设计

设计中的挑战

  • 设计是一个风险极大的问题
  • 设计是一个了无章法的过程
  • 设计就是确定取舍和调整顺序的过程
  • 设计收到诸多限制
  • 设计是不确定的
  • 设计是一个启发式过程
  • 设计是自然而然形成的

关键的设计概念

  • 软件的首要技术使命:管理复杂度

Accidental and Essential Difficulties

管理复杂度的重要性

如何应对复杂度

高代价、低效率的设计源于下面这三种根源

  • 用复杂的方法解决简单问题
  • 用简单但错误的方法解决复杂的问题
  • 用不恰当的复杂方法解决复杂的问题

偶然的难题和本质的难题

理想的设计特征

最小复杂度

易于维护

松散耦合

可扩展性

可重用性

高扇入

低扇出

可移植性

精简性

层次性

标准技术