30 多年的編碼經驗總結成 10 條最佳實踐

吧主發表於2017-10-22

歡迎Follow我的GitHub, 關注我的CSDN. 其餘參考Android目錄 我們微信公眾號:楊守樂

所以,如何使程式碼變得更好?
好的程式碼可以被識別為易於閱讀、理解、除錯和修改的程式碼,而且最重要的是很少有缺陷。顯然,編寫好的程式碼需要花費更多的時間,但從長遠來看,它也有更多的價值,因為維護成本更低,而且更易於重用。

事實上,我們可以將好的程式碼與可重用的程式碼等同起來,這是在這裡列出的許多技巧背後的驅動原則。程式碼可能實現您的短期目標,作為一個特定功能的程式設計師,但是如果沒有其他人希望重用它(包括您未來的自己),那麼它一定是缺少某種方式。要麼它太複雜,太具體,太可能在不同的環境下崩潰,或者不能被其他程式設計師所相信。

我發現,不斷嘗試將下面的最佳實踐應用於您所編寫的所有程式碼(包括您的實驗和原型),無論您的經驗水平如何,都能帶來更好的程式碼。

1、遵循單一責任原則
函式是程式設計師最重要的抽象形式。它們可以重用的程式碼越多,編寫的程式碼就越少,它們的可靠性也就越高。更小的函式遵循單一責任原則更有可能被反覆使用。

2、減少共享狀態
您應該隱式最小化函式之間的共享狀態,無論它是檔案範圍的變數還是物件的成員欄位,都有利於明確要求的值作為引數。當程式碼明確了該函式需要什麼來產生期望的結果時,程式碼就變得更容易理解和重用。

在這種情況下,你應該更喜歡靜態無狀態變數,而不應該選擇物件上的成員變數。

3、區域性化副作用
理想的副作用(例如,列印到控制檯、日誌記錄、改變全域性狀態、檔案系統操作等等)應該放在單獨的模組中,而不是分散在整個程式碼中。功能上的副作用常常違反單一責任原則。

4、喜歡不可變物件
如果一個物件的狀態在其建構函式中被設定一次,並且再也不會發生變化,那麼除錯就變得容易得多了,因為只要構造正確仍然有效。這是減少軟體專案複雜性的最簡單方法之一。

5、介面/類
接受函式的介面(或在C++中使用模板引數或概念)比在類上執行的函式更具有可用性。

6、將好的原則應用於模組
尋找機會,將軟體專案分解為更小的模組(例如,庫和應用程式),以支援模組級的重用。模組的一些關鍵原則是:

1.最小化的依賴性
2.每個專案都應該有一個明確的職責
3.不要自我重複
你應該努力使你的專案小巧而明確。

7、避免深度繼承
在物件導向程式設計中,繼承,尤其是虛擬函式中,在可重用性方面往往是一個死衚衕。我幾乎沒有成功地編寫或使用那些過載類的庫。

8、在設計和開發過程中進行測試
我並不是測試驅動開發的核心支持者,但是當您開始編寫測試程式碼時,編寫測試自然遵循了許多指導原則。它還可以幫助我們更早地發現n個錯誤。但是,要避免編寫無用的測試,良好的編碼實踐意味著更高階別的測試(例如:整合測試或單元測試的特性測試)在揭示缺陷方面更有效。

9、更喜歡標準的庫,而不是手寫的庫
我不能告訴你我多久看到一個更好版本的std::vector或std::string,但它幾乎總是浪費時間和精力。除了你正在引入一個新的bug地方(參見10)外,其他程式設計師不太可能重用您的程式碼,而不是被廣泛理解,支援和測試。

10、避免編寫新的程式碼
這是每個程式設計師都應該遵循的最重要的提示:最好的程式碼是還沒有寫好的程式碼。你擁有的程式碼行數越多,你的缺陷就越多,發現和修復bug的難度就越大。
在編寫一行程式碼之前,要問自己,是否有一個工具、函式或庫已經完成了您所需要的功能。你真的需要自己實現的那個功能,而不是呼叫另一個已經存在的功能。

結束語
我發現,程式設計是一種非常類似於學習藝術形式或運動的技能,你通過有意識的練習和向他人學習而變得更好。不斷努力提高你的程式碼質量將有助於你成為更高效的程式設計師。

譯自:cdiggins.github.io/
譯文:blog.csdn.net/xiaole0313/…

推薦閱讀
學習資料(乾貨彙集)不斷更新【更新於2017-9-17】
2017 年初、阿里、騰訊、百度、華為、京東、搜狗和滴滴面試題彙集(更新篇)
如果你喜歡上了一個程式設計師小夥,獻給所有的程式設計師女友
是什麼讓你決定離開一家公司?
同時收到多家offer,怎樣選擇?

看完本文有收穫?請轉發分享給更多人
關注「楊守樂」,提升程式設計技能

blog.csdn.net/xiaole0313
【QQ技術群】279126311 [未]
【QQ技術群】484572225 [未]

相關文章