好程式碼像好的段子,不需要多餘的解釋。
如果你的程式碼是不解自明的,那麼大多數情況下,它並不需要註釋和文件。
好程式碼就像一部好車,輕輕鬆鬆飈到最高時速。當出了問題,任何修補機制都能將它推進車庫,以很簡單的工序,使用基本的工具將其修復。而爛程式碼就像一輛車,它聲稱可達200MPH,但音響只能播磁帶,放置杯子的地方也滿是汙點。每當你嘗試調整後視鏡,車都多少起點火,而且必須得特定人員來,在高檔流水線上,使用來自星星的工具將車再拼起來。
好程式碼就像一本好的教科書
- 簡單易懂。
- 很精巧的分成章節,每章每節都有不同的意義。
爛程式碼就像寫的很爛的教科書
- 章節之間互相引用,而又搞不清每一節說的是什麼。
- 不停地說同樣一件事,讓人莫名其妙。
- 作者會提出一些規則之外的特例,常常還自相矛盾。
如果你想寫好程式碼,那麼你應當記住
- 可讀性 —— 對你與所有讀你程式碼的人。
- 可維護性 —— 保持你的程式碼易於修改。
- 簡單 —— 不要帶來不必要的複雜性。
- 高效 —— 你應讓你的程式碼儘可能快。
- 清晰 —— 如果的你程式碼不解自明,那麼大多數情況下並不需要註釋。方法與屬性的命名要說得通。把大段程式碼分割成小的模組。不要複製貼上程式碼塊。必要時要提供註釋和文件,因為程式碼註釋是原始碼中唯一可以讓人類直接閱讀的文字,用於解釋為什麼某一段程式碼存在。
程式碼質量測試
- 找一個從沒看過你的程式碼的同夥讀一遍並向你解釋每一模組是幹什麼的。你越想插嘴解釋幾句,你的程式碼可能就越爛。如果你能很安靜的閉嘴坐著,而你的同夥不需要問太多問題,那麼你的程式碼很可能不錯。
好程式碼預兆
- 寫的程式碼挺聰明的,但沒耍小聰明。
- 演算法在速度與可讀性都是最優的。
- 類、變數和函式的命名都說得通,不需要多餘思考。
- 一週不看這片程式碼後還能很快投入進入。
- 該重用的都重用了,沒重用的隨時可以重用。
- 方法都不長,都能單獨完成一項任務。
- 當你呼叫一個方法時不需要進去看程式碼。
- 你的每個類都有一個單獨的、清晰的職責(單一職責原則)。並與其它職責不同的類分離。
- 你的方法都很簡短,大多在50行以下,全部在100行以下,而且從名稱可以清晰看出功能。
- 當你需要回去修改專案功能時並不費勁,甚至很輕鬆。
- 你的try/catch程式碼塊很小。
- 單元測試很好寫。
好程式碼是模組化的
假設你的專案中有三層:內層,中層和外層。那麼內層不應該依賴中層和外層,而中層不應該依賴外層。這樣,你的內層就可以被單獨測試了。
在此再次奉上Bob大叔的Clean架構。
好程式碼是最好的文件。 —— SteveMcConnell