产出高质量代码的秘密
记得之前在ThoughtWorks工作时,每天都有例行的Code Review环节,团队中的开发人员会轮流演示当天的代码。如果在Code Review过程中发现代码有问题,会当场指出并提出改进意见。参加过Code Review的人一定会发现一个有意思的现象:能够发现问题,并提出改进意见的,永远是少数人。
这些少数人,一定掌握了产出高质量代码的秘密[Doge],不然他们为什么能在短时间内判定出来代码的质量是否存在问题呢?
高质量代码的特点
通常来说,不管是实现一个业务逻辑、一个框架、或者一个中间件。当我们评价代码质量的好坏时,都可以通过SOLID原则来进行判定。
SOLID由五个原则组成:
1、单一职责(Single Responsibility Principle)
2、开闭原则(Open-Closed Principle)
3、里氏替换(Liskov Substitution Principle)
4、接口隔离(Interface Segregation Principle)
5、依赖反转(Dependency Inversion Principle)
想要理解SOLID原则,其实不是一件困难的事情,互联网上有大量的资料可以去学习。真正困难的地方在于如何让自己在写代码时,能够自然而然的应用SOLID原则。
其他容易实践的规则
其实软件领域已经总结出了一些更通俗易用的原则,比如DRY、KISS、YAGNI。熟练掌握这些原则就已经可以帮你在产出高质量代码的路上更进一步。
KISS - Keep It Simple & Stupid
KISS原则提倡的是尽量保持简单。当一段代码容易被人理解,同时又便于维护时,我们就可以认为这些代码是简单的、是符合KISS原则的。在实践KISS原则时有几个技巧可以了解一下:
1、不要使用团队中其他成员不熟悉的技术。比如:在复杂的校验逻辑上采用正则表达式,但是团队内掌握正则表达式的程序员又不多。
2、不要重复造轮子,要善于使用一些公共类库。常见的公共类库有apache-common、guava、hutool等,这些类库都经过了严格的测试,并且在方法命名上也很合理,基于这些公共类库实现的代码既可以保证可读性、又能降低bug产生的几率。
YAGNI - You Ain’t Gonna Need It
YAGNI原则提倡的是不要过度设计。但是不要过度设计并不是意味着只考虑眼前的需求就行,而是要在满足当前需求的前提下,预留一些扩展点。比如系统要使用cache,目前采用的是Ehcache,但是后续有可能要支持redis。那么这个时候,你需要做的是设计一个抽象的cache,以及一个ehcache的具体实现。
DRY - Don't Repeat Yourself
DRY原则提倡的是不要重复。虽然看起来简单,但是在实践过程中有时候会误操作。当代码出现重复时,我们要去判定这段重复的代码,是否是临时性的重复。有些代码虽然看起来是完全一样的,但是由于业务不同,在未来不一定是同样的处理逻辑,所以这个时候不能简单的认为这种重复代码就要抽离出去。
刻意练习
仅仅了解这些编码原则是不够的,提高代码质量的秘密还是在于能否将这些原则融入到自己的编码习惯和思维方式中去。通过刻意练习是可以做到这一点的,我个人的经验是在实现需求之前,先强迫自己把事情想清楚,在想清楚的过程中一定要依据文中的原则对代码进行分解,最后才是编码实现。
评论