大家发现没,设计原则通常都有一个很普遍的特点:语言很简练,听上去很有道理,但是拿来指导实践根本无从下手。比如说,在学习简单原则(也就是我们平时说的 KISS 原则) 时,你可能遇到过下列问题:
-
为什么身边的程序员都告诉你保持“简单”代码很重要?
-
什么才是好的“简单”代码?
-
如何能写出“简单”的代码?
-
YAGNI 原则和 KISS 原则是相同的吗?
这些问题看上去简单,回答起来却不简单。所以,今天我们就带着这些问题,重新开始学习 KISS 原则。
一、为什么要让代码保持“简单”?
KISS 原则(Keep It Simple and Stupid),翻译过来就是:保持简单,保持愚蠢。
KISS 原则自 1970 年起就开始得到广泛使用。现在在软件开发中,KISS 原则通常是指代码应该更容易理解、更容易编写、更容易改变,并应该一直保持如此。
可能你会疑问:为什么非得要让代码保持“简单”呢?写出来能运行不就好了吗?其实主要有以下三个重要的原因。
第一,防止代码腐坏。编程里有一个很大的矛盾:刚开始时一切都好,代码简单可读,逻辑清晰,可随着时间的推移,特别是当越来越多的人参与到项目中时,代码数量呈指数级增长,功能越来越丰富,逻辑却越来越复杂,代码变得难以理解和难以维护,这时代码就开始变得腐坏。保持代码简单性一方面可以降低模块的理解难度,另一方面也让代码修改的范围边界更清晰,这样就能有效地防止代码腐坏。
第二,减少时间成本的投入。我们知道软件复杂度有三个来源:代码规模、技术复杂度和实现复杂度。通常来说,代码越复杂,在这三方面投入的时间成本就会越多。比如,维护 10 万行代码和维护 1000 行代码所需要投入的理解与逻辑梳理时间是不同的。再比如,使用 Redis 作为缓存和使用 LRU 本地缓存所需要的学习时间也是不同的。
对于开发人员来说,维护代码必然需要花时间修改、调试、理解内在逻辑并让代码正常运行,一旦代码非常复杂,势必会增加时间成本,进而让开发团队的研发成本增加。如果代码能够保持简单清晰,那么最直接的效果就是降低学习与维护代码的时间,这是很多开发团队都愿意看到的结果。
第三,