我的程式碼會說話 第2章 劣質程式碼是怎麼產生的

       第二章作者列出劣質程式碼產生的原因。我對「按照流程圖來撰寫程式碼」很有感觸!


2.1 理論知識匱乏


1.複製貼上


2.按照流程圖來撰寫程式碼


採用流程圖設計程式,會把物件關係抽象放在次要地位,會導致圈複雜度變高,導致Bug變多。


3.臨時對策


時間壓力下的臨時對策會累積技術債務,有一天會付出代價。


4.定式思維


(1)  認為動作必須是方法


針對不同的動作採用分支+不同的函數處理,作者建議可用多型+工廠模式取代分支+不同的函數。


(2) 認為狀態只能採用整數來定義


狀態通常也是用分支進行處理,作者建議可用STATE模式(?)來處理。


(3)認為switch-case必須有default


(4)認為Listener 必須寫成匿名類別


??????


(5) 認為for必須有下標


forEach 可取代 for


(6) 認為for必須三段都寫


2.2 對程式語言不熟悉


1.泛型


沒有用泛型導致缺少型別安全驗證。


2.正規表示式


Java語言String.split依據正規表達式進行拆解。


3.List 排序


List 有sort方法可以排序


4.列舉類型


5.toString


Java語言Object類別本身有toString方法,可以override這個方法,System.out.println(object)可按照格式化的字串輸出物件。


6.clone()


clone方法可透過記憶體來複製一個物件,想使用clone方法,類別還需要實作Cloneable介面。


2.3 對開發環境不熟悉


本書使用Java


2.4 對設計方法不瞭解


常見對設計方法不瞭解而造成的問題:


重複與類似


套件結構不清晰


類別責任不明卻


常數資料類別


長方法


複雜分支


類別膨脹


類別爆炸


 


2.5 程式設計的習慣不佳


1. 缺少必要的註解


遺留未完成的功能不寫註解,會導致將來無法尋找。 空白的Exception如果不寫註解,其他人不明白可忽略還是處理上的遺漏。


2.迷信IDE自動產生的程式碼


IDE產生的程式碼僅供參考


3.命名習慣不好


4.沒有管理好程式碼的職責


假設有個驗證電子郵件的函數,最簡單直接的方法是直接寫在UI程式,但這樣就無法重新使用這個函數。


可以把這個函數寫在Util類別,就可以再使用。最好的方法是在電子郵件類別中來實作。


5.對照教材照本宣科


教科書的教材都比較簡單。


6.不考慮呼叫時的形式


例如 setVisible(true) 比 render(true) 表達更清楚。


7.不考慮命名的一致性


例如  remove 代表刪除,就不要再用delete代表刪除。


8.不設計就Coding


2.6 英文能力不足


1.詞性不對


集合性質的變數命名可採用複數形式,例如books比bookList好。


變數應用名詞,action比 act 好。


只有開關兩種狀態可用形容詞,多種取值的屬性應該使用對應的名詞。


 


2.詞彙不對


 


表示縮短 shorten 比 makeShorter 好


表示認證 authenticate 比 doLogin 好


 


Stack 應用 Push 和 Pop,餘額應用balance 而不是leftMoney


3.時態不對


原形動詞會不知道正在發生還是已經發生,用過去式或現在進行式可表達狀態。


4.語法沒有善加利用


判斷cell是否在最後一排的寫法


if(cell.isAtLastColumn()) 比較易讀好懂。


2.7 管理人員的誤導


1.按照模組劃分任務


好處是每個人的責任明確,壞處是產生重複和類似。


2.形而上學的編碼規範


 


(1) 每行長度不能超過80個字元


 


作者建議筆電的情況可採用120字元做為長度限制。


 


(2) 統一採用4個空格縮排


 


(3)最小修改範圍


 


有版本管理工具可以不用太在乎這個規則。


 


(4)程式碼中殘留修改的歷史記錄


 


有版本管理工具可不用留下歷史記錄。


 


(5)方法命名必須以動詞開頭


 


3.時間壓力下的催促


 


4.認為別人一定比自己好


 


5.過分限制開發人員


 


 


留言

這個網誌中的熱門文章

異世界NTR web版第三章 觀後感 喧賓奪主 ,反派實力過強

持有縮小技能的D級冒險者,與聖女結婚並加入勇者團隊 漫畫 01-04 觀後感 大我與小我

泛而不精的我被逐出了勇者隊伍 web第三章 觀後感 菲莉真能打; 露娜超爽der