技术开发 频道

“懒”出生产力是程序员的重要美德

懒人善用工具增加生产力

想要偷懒,你可以从许多面向来着手,而第一个会被大家所先想到的,便是开发工具上的辅助。的确,如果你想要偷懒,第一件事便是要试着尽可能地自动化所有的事物。

在程序撰写的过程中,有太多具重复性、单纯只是劳力性质的工作。所有具有规则性的事物,都可以利用自动化的方式,让工具为我们代劳。例如善用程序代码的产生器,便可以免去人工撰写那些机器便有能力产生出来的程序代码。

又好比一些自动化的建构工具,例如在Java社群广泛被使用的ANT,便是一套透过让你描述建构软件的程序,藉以自动化执行此一程序的工具。透过这样的工具,在建构过程中的许多动作,例如自版本控制系统中取出原始码、编译原始码、部署至测试环境、单元测试,及寄发测试报告等,都可以轻易地自动执行。

降低人力介入的程度,不仅省时省力,也不易犯错。此外,许多IDE也都提供了像程序代码自动补全(Automatic Code Completion)、或自动API提示的功能,都可以省掉许多打字及查询API文件的时间。

优秀的程序员,多半懂得如何善用各式工具。

尽管许多工具都能提升撰写程序的效率。但许多程序员都存在着对工具的迷思。并不是每种工具都适合每个程序员,原因在于每个工具的定位不同。工具并不是威力越强大就越好,你必须挑选适合用途的工具,正所谓杀鸡焉用牛刀,杀鸡不仅不需要动用到牛刀,用了牛刀,鸡反而可能也杀得不好。

懒人运用重构提炼自有的链接库

真正优秀的程序员并不完全倚靠工具来达到偷懒的目的,事实上,工具所能节省的,往往并不是关键,真正的关键还是在于程序员自己如何进行设计。

真正偷懒的程序员,会持续地让自己的设计保持在一种很容易可以偷懒的状态,也就是说,只需要花费一点点力气,就能得到自己所需要的东西。这就是我所说的四两拨千斤。

如何让自己的设计尽可能的保持在一种很容易可以偷懒的状态呢?关键之一说穿了,还是要让自己的设计尽可能地可以被重复运用,而且是跨项目的重复运用。许多项目所欲开发的系统,或许最后呈现出来的面貌有着很大的不同,但内部会运用的元素,往往都落在一定的范畴之内。化学元素周期表中的元素总数仅有一百余个,但却也能组成了我们所见到的无数种物品。

设计出能够跨项目重复使用的程序代码,需要搭配持续重构,并且让自己的程序代码朝着更佳的通用性持续演化。当你在执行重构时,会找出形态相似的程序代码,并且利用提炼函式或类别的技巧,将它们以更为通用的型式整理出来。你(或你的团队)需要建立一个自有的链接库,放置这些通用的程序代码。而且,必须在项目中持续使用链接库中的程序代码。唯有如此,才能持续考验它们并且让它们有演化的机会。

懒人不随便重新造轮

虽然我鼓励人们建立自有的链接库,容纳在开发过程中所找出来的通用程序代码,但却不鼓励人们反复地重造轮子。懒惰成性的程序员,是不会浪费时间去重新建造轮子的,一定是从既有的轮子中挑选出适用的,再施以最小的力气,添加一些程序代码,使得所选出来的轮子,能够顺利地接上自己所开发的车子。

所以,把“懒惰”视为美德的程序员,绝不轻易地重新开发已经存在的东西,而是会尽可能加以利用──尤其是开放源码的成品,因为这代表你可以自行加工或修缮的空间较大。现成的产物就是你能够得到的千斤,而四两就是你所施加的额外力气。倘若每个轮子都自己重头来过,那么施千斤力,或许反而只会有四两重的效果。

随着时间的过程,懒惰的程序员会累积出相当多的资产,这些资产是可以被灵活地运用在各种项目中。懒惰的程序员在面临一个新的开发需求时,所做的事情,往往不是将程序代码重头写过,而比较像是把可被重复运用的程序代码,当做积木一般堆积起来,生产力自然大大的不同。

懒惰的最高原则:不浪费力气在不会发生的需求上

偷懒的程序员更不会犯了设计过度工程化(Over-Engineering)的毛病,因为过度工程化,会浪费无谓的力气在不会发生的需求上。懒惰的程序员只会专注在面前以及可见的近端未来。

你瞧,偷懒的天性竟会对程序设计带来这么多的好处,难怪它是那么重要的美德了。

 

0
相关文章