
話是這麼說的沒有錯, 但是
其實 "多看別人寫的程式" 這句話是有語病的, 沒有好好的分析它的話, 甚至會嚴重地誤導你的學習, 所謂的 "多看別人寫的程式" 這種說法和我們在學習外國語言時的座右銘 "多看、多聽、多說" 是一致的, 但是很重要的是你要在適當的環境裡來實行才有效果, 例如學美式英文, 你就是要到美國去, 或者至少你接觸到的人必須是土生土長的美國人才可以, 這樣子你多聽的才是正確的, 多講的才是正確的, 如果你在一堆中國人當中講練習英文, 那就不必了, 不會道地的。 那麼講到寫程式呢? 我們在很多地方都可以看到很多人寫的程式, CPU 都可以執行, 答案都是我們想要的, 這樣子的程式應該可以看看了吧? 錯! CPU 可以執行、 且不會出錯、 會跑出正確答案的程式不見得是你應該學習的程式。
讓我們這樣子來解釋: CPU 是一個很簡單的東西, 它能做的事很單純, 所以操作命令它的程式當然也會很單純, 你一定很容易可以看得懂的, 所以簡單的說一個好的程式應該是很單純的, 很淺顯易懂的, 邏輯清楚不混淆的 ..., (請注意:很單純淺顯的程式不一定很短喔!) 你該看該模仿的程式就是這樣子的程式。
如果一個程式讓你乍看起來覺得前後的敘述糾葛在一起, 前後的資料變數看似相關又好像無關, 迴圈三四層, 條件測試三四層, 全域變數一堆, 每一個函式二三百列敘述, 變數都是用 x1, x2, x379, y10ab, yvs, srw, ... 這種沒有意義的名字, 那就建議你別費神去看了, 這種程式也許可以執行, 有錯誤的時候根本沒人敢去改它, 它像是一張多維度的網子, 每一個敘述雖然只使用三五個變數, 但這三五個變數在一二十個敘述中使用到, 這些敘述又使用到其它的變數, 如此幾乎所有的變數和敘述都相關了, 牽一髮而動全身, 誰敢去動它? 當然也就別提去修改增加它的功能了。
![]()
有的人做事雜亂無章法, 有的人做事有條有理, 通常我們在處理事情的時候都會將相關的事物放在一起, 無關的事物則各自歸類, 如此的話就是看起來有條有理的那種人, 如果完全不做整理, 所有的事情都混雜在一起處理的話, 就是屬於雜亂無章的, 我不是在批評做事雜亂無章的人, 其實這類的人如果能把事情一一完成的話, 通常是記憶力比較好的那種人, (如果亂成一堆又無法完成, 我們就不必討論了。) 不過這種人終究是少數, 通常一般人記憶力沒那麼好的話, 就需要靠整理的功夫, 分門別類, 就可以減少出錯的機會, CPU+Memory 這個組合因為記憶力超強, 因此它可以做的事情包括很多亂無章法的事, 但是千萬別學它。
![]()
![]()
注意:
資料與動作流程是兩個相互影響的東西, 有時資料結構的不適當, 會導致程式流程異常的複雜, 例如: 寫一個二維矩陣相乘的程式如果你用一維的陣列來表示的話, 你的程式當然會比較複雜, 另外有時程式邏輯沒有清楚地歸納、 適當地分段區隔開來, 會導致資料的混淆與錯亂, 例如: 全域變數就好像一堆人吃大鍋飯菜, 又不分公筷母匙的, 你一筷、 我一匙的, 你怎知道飯菜到底是誰吃了, 是誰汙染了..., 相同地, 全域變數內的資料可能在程式任何一個地方被修改, 完全不配合各自區段之邏輯, 其內資料的變化就很難掌握了。

回
程式設計課程
首頁
製作日期: 98/11/10
by 丁培毅 (Pei-yih Ting)
E-mail: pyting@cs.ntou.edu.tw