摘要:在公司,一般都會有公司規定的若干規范,在編碼時,時刻提醒要遵循這些規范,命名規則縮進規則換行規則團隊不分大小,哪怕是個人獨立項目,風格統一的代碼,是確保代碼可讀性的前提。
什么樣的代碼才是好代碼
**遵循規范
有意義的命名
足夠短的方法體
無歧義的行為**
一篇好的代碼,就如同一篇好的文章,結構合理,重點清晰,通俗易懂。積累了足夠多的編碼經驗,在完成功能之余,自然會追求自己的代碼更“好看”一些,接下來就談談我對于“好代碼”的理解。
遵循規范
沒有規矩,不成方圓,遵循編碼規范,是最基本的素養。在公司,一般都會有公司規定的若干規范,在編碼時,時刻提醒要遵循這些規范,命名規則、縮進規則、換行規則……團隊不分大小,哪怕是個人獨立項目,風格統一的代碼,是確保代碼可讀性的前提。
如果實在不知道應該遵循怎樣的編碼規范,不妨找找看語言官方是否有推薦的規范說明,比如C#,微軟官方就提供了一套編碼規范。或者,我們可以找某個大公司的編碼規范,這些規范一般都是經過了實際項目實踐過的,可以放心使用。
養成了習慣之后,代碼就如同學生時代寫作文那樣,無論內容好壞,首先“卷面分”是能拿到的。
有意義的命名
為你的類、方法、變量選擇有意義的命名,相信我,這非常重要,好的代碼應該是“自解釋”的,不僅可以提高代碼可讀性,也提高了可維護性。假如,僅僅半年后再讀自己的代碼時,看著滿篇莫名其妙的名稱,連代碼要實現什么業務邏輯都想不起來了,能做的就只有懷疑人生了吧。
類的命名,應該體現出“是什么”。比如一個提供文件讀寫功能的類,叫做 FileAccessor 就比 FileHelper 好一些,當然或許分解成 FileWriter 和 FileReader 更適合,但這要視需求而定。
方法的命名,應該體現出“做什么”,描述這個方法實際做了什么處理。比如我們有一個根據名稱排序的方法,那么叫做 SortByName 就比簡單的 Sort 擁有更好的可讀性。
變量的命名,如同類,也應該體現“是什么”。比如一個保存文件完整路徑的變量,叫做 a 的話,簡直是反人類,叫做 f 好歹能讓我猜想這是個有關 file 的變量,如果叫做 filePath 我給90分,如果是 fileFullPath 我就給滿分。
足夠短的方法體
一旦一個方法寫得太長,勢必堆積了大量的邏輯,一旦涉及到很多嵌套或者邏輯分支,不說將來的維護難度,就是當下,很容易就把自己也繞懵了吧。
所以一旦法相一個方法體過長,就應該考慮是否需要把一個完整的邏輯段提取成一個獨立私有方法了,這樣以來,不僅縮短了單個方法的長度,讓邏輯更加清晰,也可以有效的降低風險,因為簡短代碼的邏輯復雜度勢必降低,開發人員更容易把握住。
至于“過長”是多長呢?根據個人經驗,25行就值得引起注意了,50行基本就是可忍受的上限了,除非及特殊情況,否則盡量不要超過這個上限。曾經維護過單個方法2000多行的人瑟瑟發抖,往事不堪回首。
無歧義的行為
具有隱含行為的方法,危害極大。一個方法,盡量只做一個事情,不要做額外的事,否則很容易帶來意想不到的風險。
舉個例子,我自己寫過的一個方法。基本數據結構類似堆棧,每次從集合中取出一個對象之后,將這個對象移出集合。但是我的方法名稱是 GetXXX,結果就是發現每次取一個對象之后,集合莫名其妙(其實業務就是這樣沒錯,但是我不記得這回事兒了)地就會變短,導致后續的處理一塌糊涂。對策有兩種,一是把對象移出集合的邏輯拿到 GetXXX 的調用處來做,這樣移除動作就是顯示可見的了;或者把方法名改成 PopXXX 或者 GetAndRemoveXXX (丑了點,但好歹看得懂),這樣以來,至少我們的行為與名稱是一致的,消除了歧義。
以上只是簡單列舉了一些最基本的準則,希望對同樣希望寫出“好代碼”的同行有幫助,感謝閱讀。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/77623.html
摘要:上班太忙沒時間自己學習很多人認為自己沒有成為技術大牛并不是自己不聰明,也不是自己不努力,而是中國的這個環境下,技術人員加班都太多了,導致自己沒有額外的時間進行學習。 寫在前面 不管是開發、測試、運維,每個技術人員心里多多少少都有一個成為技術大牛的夢,畢竟夢想總是要有的,萬一實現了呢!正是對技術夢的追求,促使我們不斷地努力和提升自己。然而夢想是美好的,現實卻是殘酷的,很多同學在實際工作后...
摘要:高階組件深入理解作用以及應用本文主要以通俗易懂的語言表達自己對高階組件的一些見解,希望大家多多提問高階組件深入理解高階組件就是一個函數,傳給它一個組件,它返回一個新的組件。新的組件使用傳入的組件作為子組件。 react高階組件深入理解、作用以及應用 本文主要以通俗易懂的語言表達自己對高階組件的一些見解,希望大家多多提問 高階組件深入理解 高階組件就是一個函數,傳給它一個組件,它返回一...
摘要:普通程序員,如何轉向人工智能方向,是知乎上的一個問題。領域簡介,也就是人工智能,并不僅僅包括機器學習。但是,人工智能并不等同于機器學習,這點在進入這個領域時一定要認識清楚。 人工智能已經成為越來越火的一個方向。普通程序員,如何轉向人工智能方向,是知乎上的一個問題。本文是對此問題的一個回答的歸檔版。相比原回答有所內容增加。 目的 本文的目的是給出一個簡單的,平滑的,易于實現的學習方法,幫...
摘要:開頭正式開啟我入職的里程,現在已是工作了一個星期了,這個星期算是我入職的過渡期,算是知道了學校生活和工作的差距了,總之,盡快習慣這種生活吧。當時是看的廖雪峰的博客自己也用做爬蟲寫過幾篇博客,不過有些是在前人的基礎上寫的。 showImg(https://segmentfault.com/img/remote/1460000010867984); 開頭 2017.08.21 正式開啟我...
閱讀 1365·2021-09-24 10:26
閱讀 3679·2021-09-06 15:02
閱讀 634·2019-08-30 14:18
閱讀 588·2019-08-30 12:44
閱讀 3129·2019-08-30 10:48
閱讀 1953·2019-08-29 13:09
閱讀 2009·2019-08-29 11:30
閱讀 2295·2019-08-26 13:36