高質(zhì)量代碼的三大要素:
可讀性宝当、可維護性和可變更性
做好代碼規(guī)范、提高代碼質(zhì)量胆萧,能顯著增強代碼的可讀性庆揩、可維護性和可變更性。努力提高代碼的讀寫可維護性跌穗,是做好代碼規(guī)范的必要非充分條件订晌。代碼規(guī)范和架構設計是軟件的靈魂所在,代碼質(zhì)量偏低蚌吸,就像是人失去了三魂七魄中的一魄锈拨,就會喪失活力,影響正常運行羹唠,增加軟件交付后維護成本奕枢,出現(xiàn)推遲完成娄昆、超出預算、特性缺失等現(xiàn)象验辞。
任何語言都需要強調(diào)編碼風格的一致性稿黄。只要是團隊開發(fā),每個人都以相同的方式編寫代碼就是至關重要的跌造。這樣大家才能方便地互相看懂和維護對方的代碼杆怕。
實際上,每家公司都會有一份(或多份)代碼規(guī)范壳贪,因此提高代碼的讀寫可維護性的關鍵在于是否能落實公司的相關文檔陵珍,公司的技術總監(jiān)、項目經(jīng)理或相關代碼審查機關是否具有應有的執(zhí)行力违施。如果不能落實互纯,那么即便代碼規(guī)范畫得再美,具體的代碼也會丑到崩潰
代碼規(guī)范
如果不想為以后挖坑磕蒲,做好代碼規(guī)范是程序員和團隊負責人留潦、項目經(jīng)理的必修課。如何保證當前項目開發(fā)過程中壓力正常辣往,而不是在后期面對過多的壓力兔院、以至于噩夢纏身?最簡單的辦法就是照看好你的代碼站削,也就是落實好公司的代碼規(guī)范工作坊萝。每天為此付出一丁點的努力,便可以避免代碼腐爛许起,并保證代碼產(chǎn)品日后不至于變得難以理解(可讀性)和維護(可維護性)十偶。
代碼的可讀性
代碼的可讀性是指代碼讓人容易閱讀、跟蹤和理解的程度园细。提高代碼的可讀性可以為代碼閱讀者節(jié)約時間(避免閱讀時浪費過多無謂的時間)和精力(Debug惦积、擴展功能或是性能優(yōu)化的前提條件是你要讀懂這段代碼)。以下是摘選的可供參考的策略:
編碼風格一致
代碼清晰表達意圖
寫別人看得懂的單詞猛频,如果選用英語狮崩,那么避免日語、法語和漢語拼音等伦乔,盡量使用語義化的命名組合;
PIE 原則:意圖清楚而且表達明確地編程董习;
能夠讓人快速看懂(最低限度的要求是自己一個月后能快速讀懂)烈和;
恰到好處的注釋
不能太多或太少,注釋的形式根據(jù)代碼具體的情況有不同皿淋;
避免用注釋包裹代碼招刹;
盡量留下簡明扼要的注釋恬试;
評估取舍(不要編寫大段的代碼)
避免寫一些現(xiàn)在不需要、將來也不太可能需要的功能:
不完美主義:不多寫代碼(如會話存儲拆分)疯暑;
避免做沒有太大價值的優(yōu)化工作训柴;
區(qū)分任務的輕重緩急:
頭疼醫(yī)頭也醫(yī)腳:先容忍失敗,再解決問題(如節(jié)點關閉邏輯)妇拯;
不頭疼不醫(yī)頭:量化分析(如參數(shù)調(diào)整回滾等)幻馁;
綜合考慮一下性能、便利性越锈、生產(chǎn)力仗嗦、成本和上市時間……
簡單就是美,避免簡單的功能寫出復雜的代碼甘凭;
保持簡單的代碼遠比寫出復雜代碼要難得多稀拐,但這是值得的;
不編寫討巧的代碼丹弱;
避免無謂的條件嵌套和過度封裝德撬;
第一眼看上去就能知道其用處的代碼,才是簡單而美的代碼
堅持操作方法的原子性躲胳,而后使用組合模式實現(xiàn)業(yè)務邏輯蜓洪;
避免大段代碼,要寫高內(nèi)聚泛鸟、低耦合的代碼蝠咆;
代碼的可維護性
軟件可維護性是指理解、改正北滥、改動刚操、改進軟件的難易程度。通常影響軟件可維護性的因素有可理解性再芋、可測試性和可修改性菊霜。筆者這里將其分為兩大類:編寫時可維護性和運行時可維護性。
編寫時可維護性
編寫時可維護性是指在程序或系統(tǒng)上線后爆出 BUG济赎,開發(fā)團隊能夠及時撲滅這個 BUG 且不會爆出其他 BUG鉴逞。保持方法的原子性,提高代碼內(nèi)聚司训,能使某處修改的影響降到最低构捡,這樣某處方法出現(xiàn) BUG,也不太會影響到其他模塊的正常運作壳猜。編寫時可維護性還包括了代碼的可測試性勾徽。
運行時可維護性
運行時的可維護性是指在系統(tǒng)運行過程中(或無需再次編碼發(fā)布、只需系統(tǒng)重啟一次)修改系統(tǒng)的某項配置并使其生效统扳,且不影響現(xiàn)在正在進行的業(yè)務和用戶的操作喘帚。這要求軟件工程師不能把代碼寫死畅姊。例如配置文件、數(shù)據(jù)庫連接字符串吹由、資源文件若未、日志等。
以下是摘選的可供參考的策略:
不要把代碼寫死倾鲫;
預測可能發(fā)生的變化
通過提高代碼的復用性提高代碼的可維護性
代碼的可寫性
代碼的可寫性包括代碼的可變更性粗合,代碼的可變更性是軟件理論的核心。
代碼的可寫性是建立在代碼的可維護性上的级乍,而代碼的可寫性與可維護性又都建立在代碼的可讀性上舌劳。如果代碼難以閱讀,那么 BUG 的修正將變得難以入手玫荣,新功能的添加就更是無從入手了甚淡。