KISS和YAGNI原则看似有很多共同点,我们先进一步探讨下之间的区别。
KISS原则
KISS原则英文有好几个版本.
Keep It Simple and Stupid.
Keep It Short and Simple.
Keep It Simple and Straightforward.
总的来说就是尽量保持简单。
那么,如何来判定是否简单?
- 不要使用同事可能不懂的技术来实现代码。比如前面例子的正则表达式,还有一些编程语言中过于高级的语法等。
- 不要重复造轮子,要善于使用已经有的工具类。自己去实现这些类库,出bug的概率也会更高,维护成本也比较高。
- 不要过度优化。 不要使用奇技淫巧(比如,位运算代替算术运算,复杂的条件语句代替if-else,使用一些过于底层的函数等)来优化代码,牺牲代码的可读性。
判断代码是否简单,还有一个有效的方法,就是code review,同事对你的代码有很多疑问的时候,说明你的代码不够简单,需要优化。
我们在做开发的时候,一定不要过度设计,不要觉得简单的东西就没有技术含量。实际上,越是能用简单的方法解决复杂的问题,越是体现一个人的能力。
YAGI原则
YAGI原则的英文全称是: You Are not Gonna Need it
。直译就是你不会需要它。这条原则的核心思想就是:不要做过度设计。
比如,我们没必要提前编写用不到的代码,但并不是说不需要考虑他的扩展性,我们还是要预留好扩展点,等到需要的时候,再去实现其功能。
再比如,我们不要在项目里引入不需要的开发包,有些同事喂了避免开发包缺失,而频繁修改Maven依赖,提前引入大量常用的Library包,实际上,这也是违背YAGNI原则的。