序:当你拿到一个需求,准备写一个5万行以上的程序的时候,你是否曾经觉得不知道从何下手?是不是有种困难重重的感觉?是否写完了一个函数,又觉得不是自己期望的用途?看起来都不是很复杂,可是一做起来,却又不知道为什么变得那么复杂了。如果你刚好遇到了这样的问题,请花上十分钟,认真读完本文,或许能解决掉您的一些疑问。
5年前,有一位对编码规范很有研究的同事曾经告诉过我这样一个秘诀“把函数的功能单一化”,是的,这是一个多么朴实确是无比实用的一句话啊!他说:“我写过一个用来统计代码的小工具,我很快就从网上知道了文件系统的接口如何使用,我觉得这是一件非常简单容易的事儿,于是我很快就开始了编码。我写了一个又一个函数,可是越来越发现我对于注释,函数域的统计出了问题,而且很难调试,很复杂。我发现很多情况如"/*, /**,///*,/*//"等我怎么都无法处理好,让我很懊恼失望,我几乎迷失了方向,不知怎么改是好了,因为我改好了一个问题就会引发一个新的问题出现。后来我就发现了这一个秘诀,把函数的功能单一化,我很快就解决了所有的问题。因为我不再是用很多复杂的逻辑去处理所有的情况了,我设计了一个仲裁和几个单一化的功能,用仲裁去判断要用那个小的功能来处理当前的字符,然后由各个单一化的功能去处理,我发现各种复杂的逻辑因此也都消失的无影无踪了。”
是的,把函数的功能单一化,常常是我们解决复杂逻辑的万灵丹。这点,曾经开发过"BitCommet"的Bram Cohen,也在他的博客中说过类似的话,“Us