VOOZH about

URL: https://read01.com/gg6NE2K.html

⇱ 優秀而高效的程式設計師必需寫好代碼的10個技巧, - 壹讀


Sunday, Apr 12, 2026

優秀而高效的程式設計師必需寫好代碼的10個技巧,

2017/09/05 來源:CSDN

關鍵時刻,第一時間送達!

作者丨Christopher Diggins

譯者Teixeira10

【譯者注】在本文中,作者介紹了10個寫好代碼的建議,以自己切身編寫代碼的體會和經驗來告訴開發者這10個建議的好處,並指導讀者成為一個優秀而高效的程式設計師。以下為譯文:

那麼怎樣才可以使代碼變得優秀呢?

好的代碼可以被認為是易於閱讀、理解、調試和修改的,而且最重要的是很少有缺陷。顯然,編寫良好的代碼需要花費更多的時間,但從長期看會有更多的價值,因為維護和重用代碼的成本會變的更低。

事實上,我們可以將好代碼與可重用的代碼等同起來,這是許多技巧背後的統一原則。作為一個開發特定功能的程式設計師,代碼可能會實現你的短期目標,但是如果沒有其他人想重用它的話(包括你自己),那麼它一定是有缺點的,要麼它太複雜,要麼太具體,而且很可能在不同的情況下崩潰,從而導致其他程式設計師不相信這些代碼。

我發現,嘗試將下列最佳實踐應用於你所編寫的所有代碼(包括你的實驗和原型代碼),可以讓你寫出更好的代碼,而不用考慮你的經驗水平。

1. 遵循單一責任原則

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

2.最小化共享狀態

你應該最小化函數之間的隱式共享狀態,無論它是文件作用域變量還是對象的成員欄位,都支持顯式的值作為參數。當代碼明確了該函數需要什麼來產生期望的結果時,代碼就變得更容易理解和重用。

這種情況下,你應該優先選擇靜態無狀態變量,而不應該選擇對象上的成員變量。

3.本地化的副作用

理想的副作用(例如:控制台列印、日誌記錄、改變全局狀態、文件系統操作等等)應該放在單獨的模塊中,而不是分散在整個代碼中。功能上的副作用常常違反單一責任原則。

4. 優先使用不可變對象

如果一個對象的狀態在其構造函數中被設置一次,並且再也不會發生變化,那麼調試就變得容易得多了,因為一旦構造正確,它仍然有效。這是減少軟體項目複雜性的最簡單方法之一。

5.多用接口少用類

使用接口(或在C++中使用模板參數或概念)的函數比在類上運行的函數更容易被重用。

6. 將好的原則應用於模塊

尋找機會,將軟體項目分解為更小的模塊(例如:庫和應用程式),以鼓勵模塊級的重用。模塊的一些關鍵原則是:

  • 依賴最小化

  • 每個項目都應該有一個明確的功能

  • 不要重複

你應該努力使你的項目小而明確。

7. 避免繼承

在面向對象編程中,特別是在虛函數中,繼承在可重用性方面往往是一個死死穴。我幾乎沒有成功地編寫或使用那些能覆蓋類的庫。

8. 在設計和開發過程中進行測試

我並不是測試驅動開發的鐵桿擁護者,但隨著開始編寫代碼,測試代碼會自然而然地遵循許多指導原則。它還可以幫助我們更早地發現很多錯誤。但是,要避免編寫無用的測試代碼,良好的編碼意味著更高級別的測試(例如:集成測試或單元測試以及功能測試),而且在揭示缺陷方面更有效。

9. 優先選擇而不是手寫標準庫

我無法告訴你我多久才能見到一個std::vector 或std::string更好的聲明,但這幾乎總是浪費時間和精力的。除了顯而易見的事實,你正在引入一個bug(參見技巧10),其他程式設計師不太可能重用你的代碼,因為這不是那些被廣泛理解、支持和測試的代碼。

10. 避免編寫新的代碼

這是每個程式設計師都應該遵循的:「The best code is the code that isn’t written」(最好的代碼是不用被複寫的代碼)。你擁有的代碼行數越多,你的缺陷就越多,發現和修復bug的難度就越大。

在編寫一行代碼之前,問自己,是否有一個工具、函數或庫已經完成了你所需要的工作?你真的需要那個功能而不是調用另一個已經存在的函數嗎?

最後

編程是一種非常類似於學習的一種藝術形式或一種運動的技能,通過用心練習,不斷地從別人那裡學習,才會編寫的更好。不斷提高代碼質量將有助於你成為一個更高效的程式設計師。

-------- 熱聞回顧 --------

👁 Image
...

有錢 Python,沒錢 PHP,程式語言也嫌貧愛富

👁 Image
...

收藏丨國外開發者拯救眼睛的小技巧

👁 Image
...

那些年薪百萬工程師錢多事少的日常

👁 Image
...

30年編碼經驗濃縮的10條最佳實踐

👁 Image
...
您可能感興趣
免責聲明:本文內容來源于CSDN,文章觀點不代表壹讀立場,如若侵犯到您的權益,或涉不實謠言,敬請向我們提出檢舉
最新文章 / 服務條款 / 私隱保護 / DMCA / 聯絡我們

壹讀/READ01.COM