Introduction
本书的目的
- 描述复杂性的本质,复杂性意味着什么,如何发现系统中的不必要的复杂性
- 介绍可以减少复杂性的技巧
如何使用本书
边读此书,边进行code review,通过看别人的代码,发现问题并且提出改进意见
软件开发方式
瀑布式开发
将软件开发分为固定的几个阶段:需求定义,设计,编码,测试和维护。
在瀑布式开发方式中,一个阶段只有等到上一个阶段结束之后才可以开始。在设计阶段设计完整个系统之后,在接下来的阶段中就不会对系统再进行设计。
但是瀑布式的开发方式在软件设计中很少能够取到好的效果,因为只有在真正开始实现软件的时候才能发现问题,而在编码阶段之前的设计阶段是看不到这些问题的
敏捷开发
敏捷开发是增量式的开发方式,在最初设计的时候只是聚焦于全部功能中的一些功能。部分功能被设计,实现和评估。当最初设计遇到问题被纠正之后,再继续开发其他功能。
增量式的开发方式因为软件设计永远不会停止,最初的设计永远不是最好的,作为一名好的开发人员,应该一直寻找机会来改善软件的设计
语录
- 如果我们能够在脑中具象化一个系统,那么我们就能通过编程的方式来实现它
- 在编程中最大的限制就是我们是否精准地理解了我们正在编写的软件,只有充分理解软件,才能编写出更好的软件
- 随着软件的不断壮大,参加的人越来越多,编写者越来越难以掌握软件的各个方面,这就会导致开发速度变慢,甚至导致bug