什么是现实理想主义者 (www.yinwang.org)

【简介】

王垠对代码重构的理解很认同:

虽然我喜欢简单优雅的代码,然而对于别人写的代码,就算它再丑再乱,我也不会乱动它。我就像一个外科专家,多次对已有代码进行“换心手术”。这种手术成功的要诀,是制造尽量小的“切口”,刚好可以换掉心脏,而不动其他部位。就算那些地方血管乱绕,堆满各种垃圾,也不要去动它们。

这是为什呢?因为代码首要的目标应该是“解决问题”(包括“没有 bug”),其次的目标才是“简单优雅”。如果不能解决问题,再优雅又有什么用呢,只不过是玩具而已。对于已经可以解决问题的代码,就算它再乱再复杂,我也是高度尊重的,绝对不敢像这个朋友一样,不假思索就删掉重写。这就像你给别人做换心手术,看到大腿上有些血管是乱的,就把大腿也切开倒腾,你的病人不死才怪呢。

我自己写代码的时候,“解决问题”和“简单优雅”往往是紧密结合,交织在一起的。如果我写不出简单优雅的代码,我就不能又快又正确的解决问题。所以我的代码往往从一开头就是简单优雅,模块化的。我从很小的函数开始写起,每个函数只解决很小的问题,最终我把它们组合在一起,解决掉整个问题。

对于别人的代码,情况就很不一样了。很多人写的代码很乱,很复杂,不易理解,看得我头痛,但由于他们在上面花了很多的时间,而且这些代码经过了很长时间的使用,大量现实情况的考验,所以它们已经算是解决了问题。对于这样的代码,我的经验是这样:如果把它删掉完全重写,是很难不犯原作者已经犯过的错误的。就算你自认为水平世界一流,写的代码极其简单和优雅,也不能避免犯错。

点击查看原文 >>

@shengting 2018-02-26 18:33 / 0个评论
赞过的人: @技术头条