怎样写出漂亮的代码?

事实上,在WP这个范围内,我还是看过一点代码的,看多了,我就觉得,怎么有些代码看着就讨厌,而另一些代码看着就很兴奋,觉得很爽。

举个例子,WP本身的代码,看着感觉还不错,至少很清楚,一般一个函数打开,基本上能看懂这个函数在说什么。主题框架hybrid,结构非常清楚,非常有条理,最后就是非常合理,一看就觉得很兴奋,热血沸腾,仿佛你能在这里面做任何事情,你能理清楚来龙去脉。

再比如,现在我在研究的这个ELA,看得我就很不爽,先是代码文件的命名,很长,关键词放在最后面,还有就是,代码文件逻辑不清楚,每个文件打开,都是一个接一个的函数。可能作者这么做没什么错,但是怎么看着就那么不爽呢?

为什么要写漂亮的代码?

我觉得,这点很重要,因为代码写出来,除了要跑(run),还有一个就是要看,你自己要看,别人也要看。如果你写得很乱,很不清楚,日后自己回过头来看,都会觉得不爽,别人就更不要说了,比如我现在看我以前写的flash mp3 player,就觉得超级不爽,一团糟,简直让我自己觉得无从下手,其实那个代码的最终版本,距离现在不过20多天。

前段日子,我们组里几个人,合力开发一个服务器软件,当我看到师弟写的代码后,我真的很痛苦,虽然我最后看懂了,但是我要做的事情是在那个基础上进一步开发,我简直没有勇气继续,最后,我做了什么呢?我把他做过的事情,全部重新做了一遍,用我自己的方式。

归纳一下:

  1. 便于理解,便于维护,便于合作

  2. 节约,产生重复劳动的可能性小

  3. 不会被别人骂娘

什么是漂亮的代码?

继续上文的思路,我觉得漂亮的代码有这么几个特点:

好看,至少整齐,不会有太长的行,不会有太长的变量名,也不会有太短的变量名。批量赋值语句,初始化语句都对齐,有正确明显的缩进,不用那些tricky的技术,比如在条件语句里赋值。

好理解,这个特点很抽象,有些代码一看就懂,真的;有些代码就让你很费脑筋。所以,漂亮的代码,应该读起来很通顺,明白你的意图是什么,像英语一样的流畅。还有就是自然,每一个东西都顺理成章。

没阻力,这个可能更抽象。和一堆漂亮的代码一起工作,感觉应该是要啥有啥,衣来伸手饭来张口那种劲,而不是到处是规则,到处是限制,到处是制约关系,跷跷板总有一头高那种感觉。

怎样写漂亮的代码?

这个,真的很难。

我想来想去,没有方法,因为我自己写的代码,也很丑陋。我自己很追求的东西,也做不到,说明这个东西不是那么简单的。

不过,我还是发现了一个办法的,就是——多写。写得越多,你写得漂亮的机会就越大。

还有窍门,过几个月,就把以前写过的代码翻出来,增加功能,修复bug。如果这个工作让你觉得很恶心,浑身不舒坦,那就说明你以前写得很差,而且,你多数能悟出来,到底哪里没写好才导致现在这种恶心的局面,然后,你就有可能以后不再犯这个错误。

又有一个窍门,就是看别人的代码,改别人的代码。干这个事,首先就是吃透别人的东西,当然,别人的东西可能是piece of shit,你吃过,就知道多恶心,就可以引以为戒。所以,千万要找大牛的代码来看,大牛给出榜样的机会更高,不过不能迷信大牛的,大牛也是人,是人就要吃喝拉撒,关键是后两个字。

总结:

代码写得漂亮很重要,而这个东西非要好好修炼不可,为啥很多长辈,一听到哪个小鬼10万行代码经验,就两眼放光呢?10万行啊,非同小可,可能你写到1万行的时候,就必须要回头去看以前的代码了,更可能的是,你得看很多别人写的代码,所以,10万代表的可能是写10万行,看30万行甚至更多。这种人,写出漂亮代码的机会非常高。

漂亮的代码可以带来低成本,因为最后代码肯定需要维护,维护起来快而简单,就降低了成本。代码可能需要升级,升级时候不需要推翻重来,就又降低了成本。

漂亮的代码可以使别人在与你的代码一起工作的时候赞不绝口,而不会骂你的娘。

其实,写WP插件这件事情,就很能修炼写代码的水平,因为你总要看自己以前写的代码,而且总要改它们,不是写完拉倒。你总要读别人写的代码,而且经常要改它们。这样,老做这种事,你就会千方百计地避免写自己看了恶心的代码,而这个时候,你的境界就得到了提升。