开卷有益-留待日后整理
1. 设计上的简单性
来自《Go程序设计语言》前言Go项目部分
“复杂性是以乘积方式增长的。” Rob Pike 如是说。为了修复某个问题,一点点地将系统的某个部分变得更加复杂,这不可避免地也给其他部分增加了复杂性。在不断要求增加系统功能,选项和配置,以及快速发布的压力之下,简单性往往被忽视了(尽管长期来看,简单性才是好软件的不二法门)。
要实现简单性,就要求在项目的一开始就浓缩思想的本质,并在项目的整个生命周期制定更具体的准则,以分辨出哪些变化是好的,哪些是坏的或致命的。只要足够努力,好的变化就既可以实现目的,又能够不损害Fred Brooks所谓软件设计上的“概念完整性”。坏的变化就做不到这一点,而致命的变化则会牺牲“简单性”去换得浅薄的“方便性”。但是,只有通过设计上的简单性,系统才能在增长过程中保持稳定,安全和自洽。
人月神话提到的“概念完整性”,相关的文章-> 软件开发的七条原则
译文链接:http://www.codeceo.com/article/7-principles-software-develop.html
英文原文:Seven Principles of Software Development