今天在公司开瞎扯淡会,聊到最近的工作,我提到说最近发现了一些新的用法,更优雅一些,改天推广给大家,旁边一个同事插话说:追求优雅的代码,就是一条绝路啊!
回来想了好久,追求优雅的代码,意义在哪里?收益在哪里?是否是浪费时间?是否值得? 元芳,你怎么看?
#8 楼 @gaicitadie 设计师会认为外行完全不懂艺术,所以也不会做外行认为好看的艺术,他们最满意的作品一定是能另他们自我陶醉的;外行认为一个东西好不好看和他是不是外行也没有关系
#15 楼 @gaicitadie 即便你的同行没学习过设计模式他也能一眼看出你代码的好赖,你费尽心思实现的优雅,即便在他看来并不美,也比你随便写一坨丢给他好的多。
至于你列出的那段的代码,相信也是经过作者打磨重构出来的,实现了作者自认为的优雅;你所举的例子里不能说明代码该不该优雅,只能说能代码或许不该过度“优雅”,不管是内行还是外行都知道这叫造作。
最后,你对例子的描述是不是有些逻辑的不通顺?
#17 楼 @gaicitadie 谢谢你把我都代表了
update: 不小心点开了你的 twitter, 我觉得和你对话就是个错误,所有发言已删除,请无视掉我
楼主不用担心自己是少数 愿意思考如何写出优雅代码的人比那些认为优雅代码没有意义的人成为更优秀的程序员的可能性大得多 当然从历史上看,成为优秀程序员的本来就是少数
If I have more time, I would write a more clear reply. -- :)
代码第一需要正确,其次就是追求那个优雅了...
优雅没有统一的标准,以衣服做类比的话,我觉得"少"可以称优雅... 以信息论测量的话,我觉得如果两段代码作用一样,熵低的可以称优雅:写起来不费劲,读起来也轻松,改起来也无鸭梨。
而我刚好有一段估算熵的脚本 ---- entropy.rb 哦!!! (你需要准备一个小词典,这个词典应包含一些常用词和一段 matz 写的 Ruby 代码)
#! /usr/bin/env ruby
require 'zlib'
DICT = DATA.read
def zlen(s)
z = Zlib::Deflate.new
out = z.deflate(DICT + s, Zlib::FINISH)
z.close
out.bytesize
end
puts zlen($stdin.read) - zlen('')
__END__
下面的内容就是词典了
使用法:
entropy.rb < your_code.rb