偷懒是一个贬义词,偷懒这个词总是和懒惰、不思进取、缺乏主动性联系在一起。但本文提到的偷懒,不是传统意义上的偷懒,而是另一种角度的偷懒,这种偷懒是和创造联系在一起,是有智慧的人才会做的偷懒行为。
其实从我们周围的事物来看,很多东西的出现,都是和偷懒有关。例如人们懒得走路,所以一些懒惰又聪明的人就发明了汽车;人们不想爬楼梯,所以那些懒惰又聪明就发明了电梯,等等。从软件开发行业来看,其实所有的类库的出现,都是因为最开始开发一个软件,很麻烦,要编写大量的代码,而且仔细看一下,发现其实里面很多代码都是类似的,重复的工作做了很多,因此那些聪明并且懒惰的程序员不想写这么多代码,就把这些类似的代码抽象出来,包装成函数或类,这样以后编程序就不需要再花这么多力气去写这些重复的代码了。
在日常开发中,我们能看到有些程序员,非常勤奋,天天加班,但是效率并不高;而有些程序员看上去很轻松,不用加班就把工作做得又快又好,这是什么原因?如果比较二者写的代码可以看到,前一类程序员的代码中会有很多功能相同的代码,同样的功能在很多地方都有实现,这样带来的坏处是万一有一个地方需要修改,那么所有类似的地方都需要修改,而且很可能修改了几个地方,但另外的地方忘了修改了,结果就出现BUG,又要调试;而后一类程序员,看不到功能相同的重复代码,这些重复的代码都以一个函数或者类的方式封装好,用的时候直接调用这些函数或类就可以了,这样如果有一个功能需要修改,直接把这个函数改了就可以了,又快又不容易出错。
举例子说,我们需要通过检测注册表项A来判断某个功能是否被打开,在一般情况下,开发人员就会直接去读取注册表项A,然后进行判断。如果有5个地方要检测,就在这5个地方都加上读取注册表并判断的代码。某一天突然说检测注册表项A还不够,同时还需要看一下注册表项B的值是否正确,这时候修改起来就很麻烦了,这5个地方都需要改,而且很容易出错。最好的做法是一开始就写一个函数,这个函数的内容是读取注册表,没有参数,返回值为BOOL,这样无论检测条件怎么改,都只需要修改这个函数即可。
因此在开发的时候,我们要有偷懒的意识,拿到一个需求首先思考一下以后有没有可能需求会改动,如果会改动可能会怎么改,预先把这些情况考虑清楚,然后编写合适的函数或类,以后需求只要不是有很大变动,都可以很快地完成。更进一步还要帮助整个团队偷懒,可以考虑一下别人使用这些东西会不会很麻烦?让别人也使用这些类,而不是自己去编写相同功能的代码,前人种树后人乘凉,和周围的同事分享你的创造,这样整个团队的代发效率就能得到提升。
如果不能理解本文的懒惰,而只是从字面理解懒惰,那属于愚蠢又懒惰的人,这不是我们希望看到的,愚蠢又懒惰的人是一定不能在团队中出现的。我们要做聪明又懒惰的人, 用创造和分享来偷懒,从而提高开发效率和质量。