22 January 2009

最近在做一个开源的项目,是从另一个java的开源项目做porting。当我读代码的时候,就觉得这个项目的代码不怎么样。庞大的类,难懂的代码,基类居然还有对派生类的依赖关系。因此在做了一段时间的translation后,我忍不住从头开始阅读spec,根据自己的理解和从java版本的代码里得到的信息,从头开始设计类结构,从头开始写c#的代码。然而随着代码越来越多,前进的脚步也越来越困难。当初看起来不舒服的地方,到最后却发现我不得不做同样的事才能前进。

回想起上一个项目中,有一个同事是从项目中期加入的,当时他看代码的时候就是看那都不顺眼。命名不清晰,结构不优美等等。于是他花了大量的时间用在改名字,改结构却没有做出任何的功能。

在项目中,我们都想追求完美,然而受到种种因素的制约,我们无法达到。有时是因为时间紧迫,有时是因为技术限制。如果你在读别人的代码的时候感觉有不顺眼的地方,千万不要着急修改,一定要先了解一下为什么会出现这些问题。要知道,你并不比别人聪明多少,你能看到的,别人也能看到,你能想到的,别人也能想到。一定要等到对代码和项目的历史有了足够的了解之后,在计划如何修改。

现在,我又会过头来耐心的做着translation的工作,不管做的时候碰到很烂的命名,混乱的结构,还是难懂的代码,我一率忍住,老老实实的做苦力。这样当我做完translation的时候,首先我能得到一个可以工作的软件,其次我对系统的理解将大大加深,然后我再进行重构的工作就要简单安全多了。

To be foolish, don’t be too smart!