「惟一能有效測量代碼質量的方式是每分鐘說多少個What-the-Fk 」這裏有一些你能夠掌握的編寫整潔美麗代碼的方法。html
Robert Martin的這句話很是合適:程序員
「惟一能有效測量代碼質量的方式是每分鐘說多少個What-the-Fk 」**正則表達式
讓我深刻解釋一下:編程
作代碼回顧的時候,個人腦海會涌現出三種不一樣的情緒:微信
What-the-Fk (厭惡)— 這代碼並不須要.**架構
What-the-Fk (欣賞) — 小夥子很機智**編程語言
What-the-Fk (無奈) — 不知道在說什麼**函數
因此當咱們看代碼的時候,是什麼最早影響咱們呢?工具
是代碼的整潔漂亮。post
同時書寫整潔漂亮的代碼是一名偉大的軟件匠人的標誌。
這裏有兩個涉及到學習這門卓越技術的要點- 知識與練習。知識能夠教會職業中所需的模式、原則、實踐和啓發式。可是隻有經過不斷的練習和努力工做,這些知識須要被才能成爲你的一部分。
因此簡而言之,學習書寫整潔的代碼是艱難的。你必會爲此付出汗水。你必將會在實踐、跌跌撞撞、失敗和熟練中一遍一遍循環直到掌握。這裏沒有簡單的方法或竅門。
這裏有一些你能夠掌握的編寫整潔美麗代碼的方法。
Kendrick Lamar很好的解釋道:
「若是我要講一個真實的故事,我會從個人命名開始「
在軟件中名稱處處都是。咱們命名函數、類、參數、包以及其餘。咱們命名源文件和目錄以及裏面的一切。咱們不斷的命名,從而使其成爲整潔代碼引擎中最重要的部分。
你的命名應該望文知義。選擇好的名稱會花時間,可是當其更艱難複雜的時候卻能夠節省更多時間。因此注意你的命名,如如有合適的名字就替換掉。每一個閱讀你代碼的人都會所以而很感謝你。
牢記變量、函數或者類的名稱應該要回答這三個大問題:存在的理由?作了什麼?和如何使用?
這不只須要好的描述技巧,同時也須要跨越邊界的共同文化背景,沒有人能比你本身更好地教導你
Louis Sullivan曾漂亮地說道.
「功能決定設計」
每一個系統都是由程序員設計,從一個特定領域的語言搭建起來的。函數是語言的動詞,而類是名詞。在任何編程語言中,函數一般是系統中的第一行,編寫好的函數是寫好代碼的實質所在。
這裏有兩條書寫整潔函數的黃金定律:
代碼應該少
函數應該專一作一件事,而且作精
因此這也意味着你的函數不該該太大來嵌套其餘結構。同時,函數的縮進,不該該大於一個或者兩個。該技巧可使得代碼更容易閱讀理解消化。除此以外,咱們也要使得函數內的語句處於同一個抽象程度。
在同一個函數中混合不一樣層次的抽象,會使得其使人迷惑,而且不利於管理。主程思考函數就像在講故事同樣,而非如何去寫代碼。
主程用其所選的編程語言的架構來構建一個更豐富,更有表現和更乾淨的代碼塊,就像一個完美的講故事的人
Venus Williams曾很好地說道:
「每一個人有本身的註釋,這就是謠言開始的方式」
註釋就像兩面刀。沒有什麼比得上放置穩當的註解。另外一方面,沒有比無聊無用的註解更浪費空間的。同時沒有比傳遞錯誤信息的註解更具備破壞力的。
簡而言之,註釋至可能是個必要的惡魔。爲何這麼說?雖然不是一直可是大部分時候,註釋越老,維護起來越困難,大部分程序員都由於不維護註釋而臭名昭著。
代碼移動和更改:代碼塊移動到其餘地方,而註釋不隨着移動,就會成爲一個問題!
要牢記,帶有一點註釋而且整潔和有表現力的代碼,要遠遠好過複雜並帶有大量註釋的代碼。不要浪費時間去解釋你寫的代碼,而去投入時間去使其整潔。
Robert C. Martin有句話很正確:
「代碼規範化是要去交流,而交流是一個專業的開發者首先要作的。」
上面這種說法是不能低估的,也是一名正真的偉大的開發者的最重要特徵之一。 規範化的代碼就像大腦的窗戶。想要經過清晰的條理,細節的關注和明晰的想法來讓人留下深入印象。再看看代碼,若是他們看到亂七八糟的代碼,沒有清晰的開頭和結束,那麼毫無疑問會會玷污咱們的榮譽。
若是你以爲讓代碼工做是專業開發者的頭等事情,那你離真相將更遠。你如今建立的功能頗有可能在下個版本中被替換,但你的代碼可讀性將不會改變。
在原始代碼徹底變得不能識別以後,代碼的風格和可讀性會持續的影響代碼的維護。
要知道未來被記得的是你的代碼風格,而幾乎不是你的代碼。因此你須要注意你的規範化並約束在整個小組的能理解簡單的規範下。
Georges Canguilhem曾說:
「犯錯是人類的本性,可是持續犯錯就是窮兇極惡的」
解決錯誤是全部程序員都會作的。輸入可能不正常,設備可能工做不正常。做爲開發者,咱們致力於讓 代碼的如期運行。然而,問題不在於解決錯誤,而是用乾淨可讀的方式解決錯誤。
不少代碼是由錯誤處理組成的。代碼就變得如此分散,以致於徹底磨滅了主代碼的目的和邏輯。這是錯誤,完全錯誤的。代碼應該是整潔的、健壯的,能夠用優雅的方式風格解決錯誤。這是一名偉大軟件匠人的標誌。
一個處理的方法是在try-catch語句中合理的閉合並捕獲錯誤。這些塊某種程度上也定義了你代碼的做用域。當你在try-catch-finally語句中的 try部分執行代碼的時候,就是在代表執行會在任意時刻終止,並在catch中恢復。
由於這個緣由,寫代碼的時候從 try-catch-finally語句寫起是個好的實踐。這能夠幫助你肯定能夠預期到的用戶代碼,無論代碼在 try有沒有報錯。
牢記你的每次例外都應該包含足夠的上下文來肯定錯誤的來源和位置。在代碼完成或者程序員離開組織後,創意性的錯誤信息會被長期記得
因此在這裏總結一切的單詞是什麼?
答案是代碼意識,在軟件中至關於常識。
根據Robert Martin說的:「書寫清潔的代碼,就須要在疼苦的「清潔」感中,嚴謹的使用無數小技巧」。而這些小技巧統稱代碼意識。」
一些人生來有之,其餘人就須要經過疼苦的堅持鍛鍊來得到。代碼意識不只能夠幫助咱們區分優秀的代碼與劣質的代碼,並且能夠有助造成策略將劣質代碼轉換爲優質的代碼。
它用鮮明的詞句代表了:僅僅是烘烤一個可愛的蛋糕是沒有幫助的,若是你已經用狗屎給其上霜了。
這代碼意識能夠幫助程序員選擇最好的工具,去指導他或者她努力建立一個更有價值的整潔漂亮的代碼。
簡而言之,一個有代碼意識的程序員就如同一名畫家同樣,能夠把空的畫布變幻成一幅優美傳世的傑出做品。
正如Harold Abelson總結道:
「程序員必須爲了讓人能閱讀代碼而書寫代碼,而機器執行只是順便的。」
來自程序師
http://www.techug.com/post/how-to-make-your-code-clean-and-beautiful.html
微信公衆號:終端研發部