读《简洁之美》

书的标题叫《简洁之美》,副标题叫”软件设计之道”。
英文原版书名叫:Code Simplicity: The Science of Software Development.
个人感觉英文名字更明了,更简洁。

老外尤其是老美喜欢给软件开发这件事情戴帽子,比如有人把软件开发说成是一门手艺,而本书则说软件开发是一门科学,是有法可依的。
呵呵,这也反应了软件开发这个事情,老美的专业化程度还是比较高的。

软件的质量和代码的质量息息相关,因此,本书的目的就是要总结提高代码质量的”道”,做到软件开发有章可依。

作者认为,软件的目标就是要帮助人,任何的软件决策都应该以这个为出发点。不仅要能帮助人,还要尽可能多的帮助人,更甚至于要持续的尽可能多的帮助人,于是,需要软件开发后维护的成本要低,这样才能可持续。

既然是科学,当然要列个方程式,软件改变的合意度(可行性),正比于软件当前价值和未来价值之和,反比于实现成本和维护成本之和。所以,如果软件要使用很长时间(持续为人提供帮助)的话,那么,降低维护成本就显得越来越重要。

变化是不可避免的,大部分程序员也都知道这点,但是为了处理变化,程序员也会进入以下设计误区:1)编写不必要的代码。常常会给后来的维护者带来很大的误解,不知道这段代码有何用,因为根本没用,所以,不要编写不是必需的代码,并删除不用的代码。2)代码难以修改。主要原因有对未来做过多的假设,不仔细设计就开始编码。为避免此问题,在设计时应该根据现在确切知道的需求,而不是你认为未来会出现的需求。同时要考虑到未来会变化,保持可扩展性。3)过分追求通用。因为未来是一定会变化的,而怎么变化我们又无法预测,因此,即使设计的再通用,也可能会出现不能满足的情况。如果你的设计让事情变得复杂而不是简单,那么你可能就过度工程了。当然,渐进式的设计和开发可以避免上述的三个误区。

程序中新增缺陷的可能性和代码修改量成正比,所以好的设计应该是能满足外界的变化,但是自身变化要少。于是,就有如下规则:永远不要修正任何东西,除非他真的有问题,而且有证据表明问题确实存在。附加一条,任何系统里的任何信息,理想情况下应该只存在一份,DRY原则。

软件越简洁越容易维护,为保持简洁,尽量保持一致(命名,方法定义等),代码排版格式,名字足够长,完整表达意义但又不要太长影响阅读。要做到简洁,通常需要设计。如果遇到了不可避免的复杂,那么在外面包一层,让别人易于理解。

本书只有100页左右,主要列出了一些原则和可以遵守的条例,跟书名比较符合,非常简单。可以作为日常软件开发的一些指导,只有在实践中不断尝试,才能利用好这些原则。另外,感觉里面的东西,在《代码大全》里都有涉及,不愧的大全啊,那本书值得多读多实践。所以,相比本书,更推荐直接去读《代码大全》那本书。