Effective Coding – Readability

來源:互聯網
上載者:User

Preface

都說程式員只是負責寫代碼的,做的都是比較低級的工作,不如架構師或設計師(以下統稱架構設計師)感覺好。但是我認為,做軟體不等同於蓋樓房,不是說架構設計師做好設計圖紙後程式員就可以按部就班的來寫代碼了,寫程式變數很多,架構設計師不可能考慮到每一個細枝末節,同時也不可能每一個細節都要求的很死,這樣寫出來的程式成本是很高的(而且就我個人而言,我不認為這種模式下寫出來的程式品質會高)。

如果你以為設計模式只是給設計師用的話那你就錯了,其實架構師、設計師、程式員這三種角色是很難劃分的,當一個架構師長時間不參與編碼的話那麼你會相信他做出來的架構嗎?如果是我的話肯定不會,他只是在紙上談兵而已,他已經落伍了,他的架構已經過時了,不再適用於現在這個年代了。同樣,如果設計師設計時不為編碼做考慮,那麼試問他的設計是正確的嗎?拿什麼相信你,我的朋友。

所以說,一個人要是沒有編碼這個基礎,什麼架構啊、設計啊,都是不可靠的。這裡我突出編碼的重要性,實際上還是為下面的內容鋪路!;)

Readability (可讀性)

對於好的程式員來說,代碼的可讀性是一個硬性指標,是必須要做的任務,不管它是多麼的枯燥,一段好的代碼它的可讀性應該永遠都是非常高的,所謂非常高就是說不管什麼人,包括你自己在內,若干時間後回頭再看你的代碼時能夠很快的看懂、理解你的思路,不需要用運行調試的方法來瞭解你的代碼、你的思路。

程式員就是一個藝術家,他將自己的思想、思維以代碼這種邏輯形式表達,就好像畫家用顏料表達自己的複雜的心緒一樣。如何用代碼來表達你自己的思想就是代碼的可讀性關鍵所在。

結構

業界中經常提到說好的代碼自己可以講話,告訴你它在幹什麼,它為什麼要這樣做。這怎麼可能呢?其實這裡突出的就是代碼的結構是否清晰。如果代碼被一種非常清晰的結構組織起來的話,那麼你代碼的可讀性已經很高了,這是單靠話語(注釋)所不能精確表達的抽象文檔,是值得我們好好利用的方法。

Procedural Programming, Functional Programming, Object Oriented Programming, Aspect Oriented Programming,這些都提出了對代碼結構進行組織的方法,但如果程式員對此不精通那麼還是不能夠充分利用它們對代碼進行高效結構化。所謂高效結構化,實際上也涵蓋了架構與設計這兩個方面,架構與設計的意圖就是為了搭建一個清晰的結構。

一方面,沒有一個萬能的指南告訴你什麼時候應該怎樣去組織代碼的結構,這方面我只能告訴你去鑽研一下你目前所使用的編程技術,是OOP,AOP還是其他什麼;另一方面,還是存在一定的手段去評估你代碼的結構是否清晰合理的,可以作為搭建結構時的參考。這些手段統稱Code Metrics,也就是程式碼度量。

比如,我可以將一個有很長一段代碼的方法打散,分成兩個或多個方法,因為過長的方法實現是一個bad smell,證明你的結構還不夠清晰、易讀。為什嗎?因為過長的方法中肯定會有過多的分支,一個方法中的分支越多它的結構越不清晰,越難控制。所以為了可讀性,為了維護性,我們都要將它打散。一般來說一個正常的方法所擁有的分支在5、6個左右,對於這種程式碼度量我們稱之為Cyclomatic Complexity,也就是一個方法所擁有的分支數量。

注釋

光靠結構清晰有時還是不夠的,雖然清晰的結構可以使閱讀者讀懂80%,但是如果有注釋加以輔助的話就可以有100%的功效了哦。這是怎麼回事?哦,是這樣的,就上面的例子來說,雖然一個好的方法實現只有少於5個的分支,但畢竟還是有分支,對於馬上讀懂來說是已經很方便了,但是還不夠方便。這時我們再用注釋標明每一塊我們認為人類不夠閱讀直觀的部分便可以了,同時也要標明對於方法等的描述。

注意注釋也是有學問的,不是隨便寫的,對於類、方法等公用成員的注釋一定要註明這個成員的作用和所有可能的輸入輸出(參數、傳回值、異常);對於底層的方法實現除了要註明這部分實現的作用外還要註明為什麼要這樣做。說明作用,只是為了免去閱讀代碼的工序,如果沒有說明只靠閱讀代碼也能明白;說明為什麼要這樣做,是為了描述程式員當時的思想,有了這個思想,即使代碼的表現形式今後完全不同了也沒關係,同一思想可以以不同的方式表達嘛!

命名規範

統一的命名規範會大大增進可讀性,這裡請注意統一二字!命名要採用人類方便閱讀的文字,比如不要用漢語拼音作為變數名,盡量廣的使用各種英語單詞。其他的我就不說了,大家可以在網上搜一下這方面的資料。

格式

代碼必須遵守格式化規範,比如統一的縮排、斷行等。格式化在很大的程度上影響著代碼的可讀性,是不容忽視的部分。這裡我不細說了,只是給出一個建議:盡量多用空行。:) 還是老樣子,注意統一二字!

小結

以上這些內容說起來還是比較快的,但是真做起來還是需要每位程式員逐漸養成良好的習慣,剛開始肯定會非常不適應,不過慢慢就會變的很自然了。

代碼規範有助於代碼的可讀性。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.