简单设计是说只编写必要的代码,用最简洁的代码来实现当前的需求,来让程序结构保持最简单、最小、最富表现力。"保持简单、保持笨拙",这也是著名的KISS(keep it simple, stupid)原则。
视频地址:https://www.zentao.net/xp/xp-simpledesign-80321.html/?from=up
很多软件设计很 好地践行了这一原则,例如知名的Unix。Unix 哲学中的很多原则也都体现了简单设计:
1.清晰原则:代码要清晰,避免晦涩难懂,清晰的代码不容易崩溃且容易理解和维护。同时也要重视注释,避免日后阅读、维护艰难;
2.简洁原则:复杂的软件出Bug的概率会更高,所以代码设计要尽可能简洁,从而降低维护成本;
3.组合原则:不同程序之间通过接口相连,而接口之间则用文本格式进行通信,因为文本格式是最易处理,也最通用的格式;
4. 模块原则:每个程序只做一件事,不要试图在单个程序中完成多个任务。例如Unix中的管道文件,管道是一个程序的输出,也是另外一个程序的输入,每个程序只专注在某一个方向;
5. 优化原则:在功能实现之前,不要考虑对它进行优化。毕竟"先求运行,再求正确,最后求快。"
Unix程序员追求简单设计,源于一个注重实效的事实:复杂度就是成本。复杂的软件更难以开发、测试、调试和维护。
如何才能做到简单设计?
Kent Beck 在《解析极限编程——拥抱变化》中,为简单设计制定了按优先级排列的4条原则:
- 通过所有测试:代码可通过在项目中所编写的各种测试,且最终能被客户验收;
- 尽可能清晰表达:所有代码都明确表达作者意图,简单说就是要尽可能增加代码的可读性;
- 尽可能消除重复:重复,意味着低内聚、高耦合。消除重复,才会有助于提升软件的响应力;
- 更少代码元素:尽可能减少代码元素,保持简洁,来降低代码的复杂度。
极限编程核心价值中的简单和勇气,在简单设计中得到了充分的体现。在实际项目研发过程中,简单设计并不是不为将来考虑,而是面对系统变更时,团队要有足够的勇气和信心,相信我们有能力通过重构,来应对新的挑战和变化。那么,团队该如何重构,我们下个视频见。