如何提高代碼可讀性缤言、可維護性

高質(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 的修正將變得難以入手玫荣,新功能的添加就更是無從入手了甚淡。

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市捅厂,隨后出現(xiàn)的幾起案子贯卦,更是在濱河造成了極大的恐慌,老刑警劉巖焙贷,帶你破解...
    沈念sama閱讀 217,826評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件撵割,死亡現(xiàn)場離奇詭異,居然都是意外死亡辙芍,警方通過查閱死者的電腦和手機啡彬,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,968評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來故硅,“玉大人庶灿,你說我怎么就攤上這事〕孕疲” “怎么了往踢?”我有些...
    開封第一講書人閱讀 164,234評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長徘层。 經(jīng)常有香客問我峻呕,道長,這世上最難降的妖魔是什么趣效? 我笑而不...
    開封第一講書人閱讀 58,562評論 1 293
  • 正文 為了忘掉前任瘦癌,我火速辦了婚禮,結果婚禮上跷敬,老公的妹妹穿的比我還像新娘讯私。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 67,611評論 6 392
  • 文/花漫 我一把揭開白布妄帘。 她就那樣靜靜地躺著,像睡著了一般池凄。 火紅的嫁衣襯著肌膚如雪抡驼。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,482評論 1 302
  • 那天肿仑,我揣著相機與錄音致盟,去河邊找鬼。 笑死尤慰,一個胖子當著我的面吹牛馏锡,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播伟端,決...
    沈念sama閱讀 40,271評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼杯道,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了责蝠?” 一聲冷哼從身側響起党巾,我...
    開封第一講書人閱讀 39,166評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎霜医,沒想到半個月后齿拂,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,608評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡肴敛,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,814評論 3 336
  • 正文 我和宋清朗相戀三年署海,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片医男。...
    茶點故事閱讀 39,926評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡砸狞,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出昨登,到底是詐尸還是另有隱情趾代,我是刑警寧澤,帶...
    沈念sama閱讀 35,644評論 5 346
  • 正文 年R本政府宣布丰辣,位于F島的核電站撒强,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏笙什。R本人自食惡果不足惜飘哨,卻給世界環(huán)境...
    茶點故事閱讀 41,249評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望琐凭。 院中可真熱鬧芽隆,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,866評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至腕扶,卻和暖如春孽拷,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背半抱。 一陣腳步聲響...
    開封第一講書人閱讀 32,991評論 1 269
  • 我被黑心中介騙來泰國打工脓恕, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人窿侈。 一個月前我還...
    沈念sama閱讀 48,063評論 3 370
  • 正文 我出身青樓炼幔,卻偏偏與公主長得像,于是被迫代替她去往敵國和親史简。 傳聞我的和親對象是個殘疾皇子乃秀,可洞房花燭夜當晚...
    茶點故事閱讀 44,871評論 2 354

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,118評論 25 707
  • 用兩張圖告訴你,為什么你的 App 會卡頓? - Android - 掘金 Cover 有什么料圆兵? 從這篇文章中你...
    hw1212閱讀 12,723評論 2 59
  • 0. 寫在前面 當你開始工作時环形,你不是在給你自己寫代碼,而是為后來人寫代碼衙傀。 —— Nichloas C. Zak...
    康斌閱讀 5,322評論 1 42
  • 2017年特殊的一年抬吟,也容我貪心點,有很多的夢想需要實現(xiàn)统抬。這是2017年1月1日對自己說的話火本,之所以會這么說是因為...
    青聲昔語閱讀 224評論 3 3
  • 在一段關系中,如果我們真的愛對方聪建,當出現(xiàn)了潛在的競爭對手钙畔,讓我們對關系有了危險意識。我們就會吃醋金麸。所謂吃醋擎析,就是妒...
    娟記閱讀 355評論 0 3