代码洁癖

我也有洁癖,虽然我是一个不拘小节,有些大大咧咧的人。而不干净不整齐的代码常常让我郁郁寡欢。自己范的错误自我纠正即可,可他人如果没有这个追求,我该如何是好?

敢于做批评和自我批评固然是一种优秀品质,但这并不意味着要以融洽的同志关系当做牺牲品来换取。当敏锐的直觉告诉我,此处代码有污迹的时候,与其快刀斩乱麻似的急于重构,倒不如先安下心来仔细的分析一番,为何代码没有带来美的享受。

这样做有不少好处。一是有助于深刻的理解问题的根源所在。特别是读别人的代码的时候,即便找不到合适的方式与他人沟通,至少自己明白问题的症结之后,从别人的代码中吸取宝贵的教训,也能保证自己不犯类似的错误。其次,静心思考,也是给接下来的沟通和辩论收集论据。己所不欲,勿施于人,自己都没搞明白的东西何必强行的去要求别人呢。倘若是由于论据不足而导致说服不了别人,恐怕以后再发言的时候,听众便要不以为然了。

说到这,顺带着讲一下我遇到的不简洁代码。

一是关于对象继承的问题。众所周知,对象继承有利于代码的重用。但并非任何行为都可以通过继承来实现重用。继承应遵守的最重要的原则便是Liskov代换原则。在任何环境下,一个子类总可以代换它的父类。意思是说老子能用的地方,换成是儿子,儿子也能完成所有的任务。若此原则不能遵守,请用组合而非继承。

其次便是DRY(Dont repeat yourself)原则,史上最重要的编程原则,永远不要写重复代码。重复代码是一个梦魇,不仅不利于维护而且不利于代码重用。究其原因,是只看到了问题的表面,而不得其实质。解决方法便是提升抽象的层面。

代码洁癖并无好坏之说,觅得问题的实质,以容易让人接受的方式传达有效的信息才是关键。