如何讓你的程式碼整潔漂亮

codeGoogle發表於2018-03-08

“唯一能有效測量程式碼質量的方式是每分鐘說多少個What-the-Fk ”這裡有一些你可以掌握的編寫整潔美麗程式碼的方法。

Robert Martin的這句話非常合適:

“唯一能有效測量程式碼質量的方式是每分鐘說多少個What-the-Fk ”**

讓我深入解釋一下:

做程式碼回顧的時候,我的腦海會湧現出三種不同的情緒:

  • What-the-Fk (厭惡)— 這程式碼並不需要.**

  • What-the-Fk (欣賞) —  小夥子很機智**

  • What-the-Fk (無奈) — 不知道在說什麼**

所以當我們看程式碼的時候,是什麼最先影響我們呢?

是程式碼的整潔漂亮。

同時書寫整潔漂亮的程式碼是一名偉大的軟體匠人的標誌。

這裡有兩個涉及到學習這門卓越技術的要點- 知識與練習。知識可以教會職業中所需的模式、原則、實踐和啟發式。但是隻有通過不斷的練習和努力工作,這些知識需要被才能成為你的一部分。

所以簡而言之,學習書寫整潔的程式碼是艱難的。你必會為此付出汗水。你必將會在實踐、跌跌撞撞、失敗和熟練中一遍一遍迴圈直到掌握。這裡沒有簡單的方法或竅門。

這裡有一些你可以掌握的編寫整潔美麗程式碼的方法。

“名稱說明什麼”

Kendrick Lamar很好的解釋道:

“如果我要講一個真實的故事,我會從我的命名開始“

在軟體中名稱到處都是。我們命名函式、類、引數、包以及其他。我們命名原始檔和目錄以及裡面的一切。我們不斷的命名,從而使其成為整潔程式碼引擎中最重要的部分。

你的命名應該望文知義。選擇好的名稱會花時間,但是當其更艱難複雜的時候卻可以節省更多時間。所以注意你的命名,如若有合適的名字就替換掉。每個閱讀你程式碼的人都會因此而很感謝你。

牢記變數、函式或者類的名稱應該要回答這三個大問題:存在的理由?做了什麼?和如何使用?

這不僅需要好的描述技巧,同時也需要跨越邊界的共同文化背景,沒有人能比你自己更好地教導你

“函式應該只做一件事.”

Louis Sullivan曾漂亮地說道.

“功能決定設計”

每個系統都是由程式設計師設計,從一個特定領域的語言搭建起來的。函式是語言的動詞,而類是名詞。在任何程式語言中,函式通常是系統中的第一行,編寫好的函式是寫好程式碼的實質所在。

這裡有兩條書寫整潔函式的黃金定律:

  • 程式碼應該少

  • 函式應該專注做一件事,並且做精

所以這也意味著你的函式不應該太大來巢狀其他結構。同時,函式的縮排,不應該大於一個或者兩個。該技巧可以使得程式碼更容易閱讀理解消化。除此之外,我們也要使得函式內的語句處於同一個抽象程度。

在同一個函式中混合不同層次的抽象,會使得其令人迷惑,並且不利於管理。主程思考函式就像在講故事一樣,而非如何去寫程式碼。

主程用其所選的程式語言的架構來構建一個更豐富,更有表現和更乾淨的程式碼塊,就像一個完美的講故事的人

註釋並不能彌補劣質的程式碼

Venus Williams曾很好地說道:

“每個人有自己的註釋,這就是謠言開始的方式”

註釋就像兩面刀。沒有什麼比得上放置妥當的註解。另一方面,沒有比無聊無用的註解更浪費空間的。同時沒有比傳遞錯誤資訊的註解更具有破壞力的。

簡而言之,註釋至多是個必要的惡魔。為什麼這麼說?雖然不是一直但是大部分時候,註釋越老,維護起來越困難,大部分程式設計師都因為不維護註釋而臭名昭著。

程式碼移動和更改:程式碼塊移動到其他地方,而註釋不隨著移動,就會成為一個問題!

要牢記,帶有一點註釋並且整潔和有表現力的程式碼,要遠遠好過複雜並帶有大量註釋的程式碼。不要浪費時間去解釋你寫的程式碼,而去投入時間去使其整潔。

“優先進行程式碼規範化”

Robert C. Martin有句話很正確:

“程式碼規範化是要去交流,而交流是一個專業的開發者首先要做的。”

上面這種說法是不能低估的,也是一名正真的偉大的開發者的最重要特徵之一。 規範化的程式碼就像大腦的窗戶。想要通過清晰的條理,細節的關注和明晰的想法來讓人留下深刻印象。再看看程式碼,如果他們看到亂七八糟的程式碼,沒有清晰的開頭和結束,那麼毫無疑問會會玷汙我們的榮譽。

如果你覺得讓程式碼工作是專業開發者的頭等事情,那你離真相將更遠。你現在建立的功能很有可能在下個版本中被替換,但你的程式碼可讀性將不會改變。

在原始程式碼完全變得不能識別之後,程式碼的風格和可讀性會持續的影響程式碼的維護。

要知道將來被記得的是你的程式碼風格,而幾乎不是你的程式碼。所以你需要注意你的規範化並約束在整個小組的能理解簡單的規範下。

書寫你的”try-catch-finally”語句

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

關於更多

用Kotlin破解Android版微信小遊戲-跳一跳

分分鐘教你學會正規表示式

2017上半年技術文章集合—184篇文章分類彙總

高階UI特效仿直播點贊效果—一個優美炫酷的點贊動畫

一個實現錄音和播放的小案例

NDK專案實戰—高仿360手機助手之解除安裝監聽

相信自己,沒有做不到的,只有想不到的

微信公眾號:終端研發部

技術+職場

相關文章