
XP、簡單以及漸進式設計
|
217
一些程式碼異味與程式碼本身編寫方式有關。當你的程式碼有非常大的類別(Very
Large Class),如果不是物件導向程式碼的話,則可能是非常大的方法、函式或模組
等,將會難以閱讀和維護。但更重要的是,這通常表明它試圖承攬太多事,因此可以拆
分成更小、更容易理解的單元。另一方面,重複的程式碼(Duplicated Code)是程式碼
相同(或幾乎相同)的程式碼區塊,顯示來自不止一個地方。這很可能是錯誤的來源,
特別是如果程式設計師作出 3 項的重複變化,但忘記了第 4 項要改變。
義大利麵式的
雜亂程式碼
千層麵式的
雜亂程式碼
圖 7-2 一些程式碼異味系統必須做出更大的設計,以及單元如何彼此互動。
其他程式碼異味關注的是程式的整體設計──程式的個別單元如何彼此互動。義大利麵
式的雜亂程式碼(Spaghetti Code)或具有複雜糾葛結構的程式碼,是軟體工程所知道
最古老的程式碼異味。時間至少可以追溯到 1960 年。你經常可以辨識出義大利麵式的
雜亂程式碼,因為它用以前嘗試開發,但卻失敗的設計者的可怕和抱歉評論所掩飾。
然而其臭表弟千層麵式的雜亂程式碼(Lasagna Code),可能是一個更加陰險狡詐的問
題。現代軟體設計通常劃分成
階層
,每層具有特定目的或行為,對整個設計有助益。然
而當有太多階層時,這些階層的模式並非一定必須一致。對這些階層來說,就變得很難
準確了解每個階層應該如何處理。這會加重階層之間的漏洞(Leak),程式碼、型別或
概念都必須放置在同一層,好讓彼此找到鄰近階層的入口。 ...