文章目录
关键的设计概念1
- 软件的首要技术革命:管理复杂度。
- 本质属性:是一件事物必须具备、如果不具备就不再是该事物的属性。
- 偶然属性:是一件事物碰巧具有的属性,有没有这些属性都不影响这件事物本身。
- 从本质上说,软件开发就是不断地去发掘错综复杂、相互连接地整套概念的所有细节。本质性困难的根源在于复杂性。
- 当没人知道对一处代码的改动会对其他代码带来什么影响时,项目也就快停止进展了。
- 降低复杂度的方法:
(1) 软件架构:把整个系统分解为多个子系统来降低问题复杂度;降低子系统间的相互依赖;
(2) 保持子程序的短小精悍;
(3) 从问题的层面而不是从底层实现细节着手去编写程序,即在最抽象的层次上工作。 - 程序员的底线:写出既让自己容易理解,也能让别人容易看懂,而且很少有错误的程序代码。
- 高代价、低效率的设计的根源:
(1) 用复杂的方法解决简单问题;
(2) 用简单但错误的方法解决复杂的问题;
(3) 用不恰当的复杂方法解决复杂的问题。 - 管理复杂度的方法:
(1) 把同一时间需要处理的本质复杂度的量减到最少;
(2) 不让偶然性复杂度无谓地快速增长。 - 一旦你能理解软件开发中任何其他技术目标都不如管理复杂度重要时,众多设计上地考虑都变得直截了当了。
McConnell S. Code Complete 2nd Edition[M]. Microsoft Press, 2004. ↩︎