1. 程式人生 > >不要濫用面向對象,寫出難以閱讀和修改的代碼

不要濫用面向對象,寫出難以閱讀和修改的代碼

設計 關系 例如 幹什麽 獨立 bsp 成員 沒有 鼓勵

筆者參與過一些完全以面向對象為設計思想的項目,不過感覺都不太好,例如,它們往往有非常之多的硬編碼和隱藏的邏輯,導致小小的修改往往會出現意外的問題;因為對象調用跳轉太多,代碼也很難閱讀和修改,調用關系很難理解。

個人認為,這不但是寫代碼的人不註意的問題,而是面向對象這種方法,鼓勵了非常之不好的代碼寫法:

1. 面向對象傾向於將所有函數都定義為內部函數,不喜歡將函數獨立出來,函數需要的變量都定義為對象的內部變量,於是很多人開始寫出這樣的代碼:所有的成員函數基本沒有什麽參數,執行時候不知道在幹什麽,在依賴哪些變量,改變哪些變量。

2. 不斷地new對象,還用了各種虛方法,就是為了解決一些簡單的問題,導致不知道究竟調用了哪些方法。這些問題不如直接switch case簡單。

3. 寫死了框架,極其復雜笨重,創建了太多對象,每個對象都不知道在幹什麽,而且能傳的參數太少,後期修改時候,太復雜不敢改框架,於是乎開始寫死各種代碼邏輯。

改進的方法:

一:寫比較內斂的代碼:比如能用函數解決的問題,不要用對象;需要的參數盡量在函數參數內傳入;狀態盡量在函數內部流轉,不要牽涉到外部的變量。

二:面向數據來設計框架,統一數據的處理,而不是用更多的對象來解決數據異化的問題。

不要濫用面向對象,寫出難以閱讀和修改的代碼