Knowledge Gained by Nothing is as Simple as it Seems

在读完大麦克对原味主厨之后,ㄚ琪要继续读没有事情像表面看起来那么简单,故事一开始约耳用自己的软体上的一个问题来述说他在实作前先设计了一个规格,之后还没动工之前又改了一次规格,而且变成几分钟就完成。

‘如果你这辈子写过20分钟以上的程式,可能已经发现这个很好的基本原则:没有事情像表面看起来那么简单。’这就是本文的主题也是一个定理,约耳的定理吧!另外‘软体工程里有另外一个定理,就是随时随地都要尝试降低风险。其中一项必须避免的重大风险是进度风险,就是某件事花的时间比预期多。’进度风险的坏处就是你公司会倒掉,倒掉一词约耳可以讲成‘印有你公司标志的购物袋愈有可能流落到资产清算的仓库,而同时间你的前执行长还在怨叹“真惨啊,我们还没有被烂公司报导前就倒了!”’这种文章写作的能力真是佩服!

再来‘“没有事情像表面看起来那么简单”再加上“降低风险”只会导出一个结论:你必须先做设计再去实作。’

下面有一些事实的陈述,Kent Beck书里头认为不先设计而直接实作是正常,其实是不正常的,‘“现在我们都用Java和XML这种高阶工具,几分钟就可以改好程式,为什么不直接在写程式时做设计呢?”我的朋友,你可以替你老妈装上轮子,不过她并不会因而变成巴士。另外如果你自认能把错用执行绪的档案复制函数,重整改正成先占多工的作法,而且速度和我写这个句子一样快,你根本就在自己骗自己 (deep denial)。’把老妈不会变成巴士的比喻拿出来,但是我不觉得这是什么好比喻,而且在程式里头,搞不好还真的可以写成老妈变成巴士说!但这是题外话!只是重点就是说如果不先设计的话,你会写的比约耳快,那是自欺欺人,看,我也用了成语,比自己骗自己的陈述更妥当!

另外‘“不要做无谓的设计”’,也不要搞混成就是不要设计。‘当Linus Torvalds痛斥设计时谈的是巨大的系统,这种系统必须逐渐演进,否则就会像Multics那样死路一条。’,所以你还是不要被Linus所说的话给骗了,以为不用设计,所以还是要当心。

‘渐进式的设计和实作是好的。常常发行也是好的。’这倒是我常用而且喜欢的,这真的是不错的一个方式,因为我们大部分人都是由不会成长大写一个小程式,再进步到较大程式,这样一点一滴来的吧!所以渐进式的方式,我绝对赞成。话说最近郝龙斌民调下滑很多,主因是花博跟新生高架桥的事,我有点觉得,一开始就搞那么大,可能是能力过度被放大了,唉!辛苦大家了,看来国民党很累了!题外话!

Comments are closed.