[技术扯淡]大技巧与小技巧

又要扯谈了。

在昨天那篇《杂而不精》中,老方在回复里提了一个技术问题,其实这个问题出自于大富翁论坛最近出版的一本书《Delphi编程专家门诊》,见帖子(请用IE打开)。

因为DFW论坛不支持FireFox(用了非标准的XSLT),所以我现在已经很少去了,曾经发过帖子向soul提意见,有人回复说他最近忙,我也就没再说这事,看来改天还得想办法联系上他再说说这事。

前两天QQ群里有人提起这本书,所以我还是开了IE上去看了一下,结果便看到有人就书中的一个话题与soul争论开了。不可否认,书里用“懒惰想少写点代码,结果却花费了大量无益的思考时间”这样的话的确有点矫枉过正。但作为一本类似技巧集的书却要特别指出这一点也是很难得的。

老子云:大巧若拙(第45章)。老子又云:人多伎巧奇物滋起(第57章)。

对后面一句,我的理解是:伎巧者,小技巧而已。奇物者,奇异而脱离实用之物。

常常会有这么一种情况,碰到一个问题,马上想到了一个解决方案,那个方案是最直接的,但需要写很多代码,不愿意,于是拼命思考如何构造一个精巧的方法使得能花费很少的代码解决这个问题。

作为一名职业程序员,最重要的是完成客户的需求。所以我们最需要的就是直接的办法,也许这个代码会比较长,但也许它恰恰是一种若拙的大巧。花费大量的时间和精力去追求少量的代码减少或有限的一点CPU时间的节约,在更多的情况下,都会是“伎巧”,这样的代码也不过是“奇物”罢了。

zhengdehei对谭浩强的代码大加赞赏,说他的代码“里面的每一行都非常的精简”。问题在于他是教育者,写的是教科书,所写的代码是为了说明相关的知识点,这样的代码是不能投入实用的。这是实验品与产品的区别,是一种本质上的区别。

网事如风提到重构,可惜他并没有完全领会Martin.Fowler在书中表达的意思。对于重构这件事来说,重构的技巧和方法并不是最重要的,重要的是发现“Badsmell”并消除之。“精巧”的代码不是重构的目标——在很多情况下,过于“精巧”的代码反而包含着不可容忍的“Bad smell”。

虽然soul在回复里试图说明他的一些大技巧观——比如精巧的设计,但这本书终归还是一本讨论技巧——而且相当一部分算是小技巧——方面的书。所以书里这段话应该说还是一剂很有必要的预防针。

(注:本文写于昨天。另,因mblogger的相册功能有问题,贴图最后一集——TP篇改在明天发表)

11 Replies to “[技术扯淡]大技巧与小技巧”

  1. 我会的东西似乎就是杂而不精我只瞄了那四个字,就联想到这个撩结果就没有再看下去,因为肯定不懂大叔晚上好~

  2. 大小之分,能难的,需要长年的经验,意识!复杂化也不对,太平铺,不知优化也不对, 因实际情况而异!

Leave a Reply

Your email address will not be published. Required fields are marked *