軟體開發中的10條最佳指導原則
1. 遵循單一職責原則
函式是程式設計師的工具中最重要的抽象形式。它們能更多地被重複使用,你需要編寫的程式碼就越少,程式碼也因此變得更可靠。較小的函式遵循單一職責原則更有可能被重複使用。
2. 儘量減少共享狀態
你應該儘量減少函式之間的隱式共享狀態,無論它是檔案作用域的變數還是物件的成員欄位,這有利於明確要求把值作為引數。當能明確地顯示函式需要什麼才可以產生所需的結果時,程式碼會變得更容易理解和重用。
對此的一個推論是,在一個物件中,相對於成員變數,你更應該優先選擇靜態的無狀態變數 (static stateless variables)。
3. 將“副作用”區域性化
理想的副作用(例如:列印到控制檯、日誌記錄、更改全域性狀態、檔案系統操作等)應該被放置到單獨的模組中,而不是散佈在整個程式碼裡面。函式中的一些“副作用”功能往往違反了單一職責原則。
4. 優先使用不變的物件
如果一個物件的狀態在其建構函式中僅被設定一次,並且從不再次更改,則除錯會變得更加容易,因為只要構造正確就能保持有效。這也是降低軟體專案複雜性的最簡單方法之一。
5. 介面高於類
接收介面的函式(或 C++ 中的模板引數和概念)比在類上執行的函式更具可重用性。
6. 對模組應用良好的原則
尋找機會將軟體專案分解成更小的模組(例如庫和應用程式),以促進模組級別的重用。對於模組,應該遵循的一些關鍵原則是:
- 儘可能減少依賴
- 每個專案應該有一個明確的職責
- 不要重複自身
你應該努力使你的專案保持小巧和明確。
7. 避免繼承
在物件導向程式設計中,繼承 —— 特別是和虛擬函式結合使用時,在可重用性方面往往是一條死衚衕。我很少有成功的使用或編寫過載類的庫的經歷。
8. 將測試作為設計和開發的一部分
我不是測試驅動開發的堅定分子,但開始編碼時先編寫測試程式碼會使得程式碼十分自然地遵循許多指導原則。這也有助於儘早發現錯誤。不過要注意避免編寫無用的測試,良好的編碼實踐意味著更高階別的測試(例如單元測試中的整合測試或特徵測試)在揭示缺陷方面更有效。
9. 優先使用標準的庫
我經常看到更好版本的 std::vector或 std::string ,但這幾乎總是浪費時間和精力。一個明顯的事實是 —— 你正在為一個新的地方引入 bug,其他開發者也不太可能重用你的程式碼,因為沒有被廣泛理解、支援和測試。
10. 避免編寫新的程式碼
這是每個程式設計師都應遵循的最重要的教誨:最好的程式碼就是還沒寫的程式碼。你寫的程式碼越多,你將遇到的問題就越多,查詢和修復錯誤就越困難。
在寫一行程式碼之前先問一問自己,有沒有一個工具、函式或者庫已經實現了你所需要的功能?你真的需要自己實現這個功能,而不是呼叫一個已經存在的功能嗎?
寫在最後的話
我發現程式設計是一門與學習藝術或運動非常相似的技能,你通過刻意的練習和從別人的經驗中學習會得到更好的結果。不斷提升你產出的程式碼質量有助於你成為更優秀的程式設計師。
相關文章
- 軟體開發的七條原則
- 軟體開發的 5 條核心原則,讓工作事半功倍
- 聊聊軟體開發的SLAP原則
- 軟體開發大牛們需要遵守的10大原則
- 軟體開發中的10個最佳實踐技巧!
- 設計和架構:業務開發指導原則架構
- 聊聊軟體開發的REP、CCP、CRP原則
- 用vue優雅地編寫UI元件的幾條指導原則VueUI元件
- 軟體開發六大原則(三)-里氏替換原則
- Salesforce架構的10條原則Salesforce架構
- SpringBatch基本的批處理指導原則SpringBAT
- 軟體設計中最關鍵的“開閉原則”,究竟指什麼呢?
- Keras作者:給軟體開發者的33條黃金法則Keras
- Spring Batch 基本的批處理指導原則SpringBAT
- 軟體測試的原則
- 科學軟體十條簡單程式設計原則程式設計
- 軟體開發的常見認知規律和原則 - Reflectoring
- 七大軟體設計原則之一 | 開閉原則
- 專案成功的10條指導方針
- 61條物件導向設計的經驗原則物件
- 開發者也是使用者 – 第二部分:改善 UI 和 API 可用性的五條指導原則UIAPI
- 軟體開發的基本法則
- 軟體開發的21條規律
- 軟體測試中的5個實用原則
- 2個軟體開發原則如何挽救您的專案 -Jordy Baylac
- 軟體設計原則—介面隔離原則
- 軟體設計原則—合成複用原則
- 開閉原則——物件導向程式設計原則物件程式設計
- 軟體設計原則
- SOLID 原則:軟體設計的基本原則Solid
- 敏捷軟體開發的最佳資源敏捷
- 寫給工程師的10條精進原則工程師
- 軟體設計原則—依賴倒轉原則
- 走向靈活軟體之路-物件導向的六大原則物件
- 6個原則助您建立高效能軟體開發團隊
- 軟體設計原則(Principles)
- 開發60條規則
- Java中物件導向的設計原則Java物件