Search This Blog

Monday, May 18, 2009

先別急著寫程式


記得在電影上看到那些駭客寫程式酷到不行; 鍵盤從沒有停過。

這讓我養成了很壞的習慣: 寫程式想到就寫。

這樣寫出來的程式,十之八九,最好都是"用過就丟"那一類的,不然就得自求多福了。草率而沒有好好設計的程式,很可能慢而且難改。先拿個大家常忘的例子來說吧,1加到100這個問題, 寫程式的大大可以用一行秒殺,馬上打出
for ( int i = 1, answer = 1; i < 100; ++i, answer += i) ;

其實稍微想一下,小學有學過 (上底+下底)x高/2。感覺上沒什麼差,但如果是1加到10000000000,那就差很大了。雖然Compiler常常很聰明地幫我們最佳話,但寫程式也是一門專業,也是要自我要求的,總不能一直把速度的問題丟給CPU,丟給Compiler 吧。更何況很多問題CPU再快也沒有用 (算算看 1000! )

如果速度不是問題(不管是什麼原因),想到就寫的程式如果到千行的時候,常常變得很難改,牽一髮而動全身,加個新的功能得用一堆if else,更慘的是不知道要加在那裡,一加整個程式就有蟲,所以又得再改,改到後來一團亂,無盡的迴圈...

所以最好是流程圖可以先畫一畫,多想想不同的狀況,怎樣可以讓程式有清楚又簡單的邏輯,我的最終目的是在解問題,寫程式只是告訴電腦我的想法:
先別急著寫程式~

No comments: