一个程序像一座大楼,构建的时候,有计划、有图纸、还有脚手架。
而这些,对于已经建成的大楼,都是看起来“不存在的”。
对于观察者来说,一座大楼就只有一座大楼。计划,不知道;图纸,不知道;脚手架,虽然盖楼时有,盖好之后也拆了。
那么,如果单单观察大楼的外观,或者你再走入每一个房间,看看大楼的“里观”,是很难想通这座大楼是怎么盖起来的。
大楼用水泥、钢筋或者砖块盖起来,而程序则用一行一行代码构建起来。
构建者写代码时,可能没有一个明确的规划,但是一般情况下,脑子里是一个思路的。这个思路,对于源码阅读者来说,是无从得知的。
而且往往会有这种情况:作者写着写着,发现正常的思路走不通,于是就产生了“为解决问题而解决另一堆问题”。
比如,大楼盖着盖着,很多工人吃饭用的一次性餐盒由于没有打扫,而堆积起来,于是就应该有人组织一个卫生组,清理清理垃圾,或者至少吩咐每一位员工注意餐盒回收。
而“回收餐盒”跟盖楼有没有关系?
这种情况,对源码阅读者来说,就容易东施效颦。
总之,新手对于大项目,往往会盲人摸象。如果没有正确的引导,往往会在大象的脚趾甲上花费好多时间。
而学习,特别是学习一个领域的入门知识,应该把目光放得大一点,看看大象的整体,有长鼻子、灰皮肤、大耳朵。而不应该先去研究大象的脚趾盖的化学性质。