代码两三事
一直有點代碼潔癖,看到凌亂的代碼就忍不住想改,但是有時候怕生變故也只能忍著不改,那種心情。。今天想談談我心目中的好代碼是什么樣的,希望能對大家有點幫助。
從書本上讀過,一個算法好壞,可以從正確性、可讀性、健壯性、高效性和簡潔性這5個方面來評價。算法也是通過代碼實現的,那么算法的標準對于代碼來講也應該是通用的。精心設計的代碼理應擁有以上特性。但是算法旨在描述一種邏輯思路,是一個完全獨立的單元,所以他不是好代碼的全部。而一個完整的代碼不同,它還要關注可擴展性、可測試性。
下面就接著以上特性做出描述:
我是特意把這個放在第一條的,有人說代碼首先是要給人家看的,這個我非常贊同。代碼能否按照我們期望正確執行,很大程度上決定于人們對代碼理解的程序。可讀性主要有:
- 邏輯清晰:清晰的思路就像與人對話,通過代碼能理解你的想法,不會出現大的閱讀障礙;
- 關鍵注釋:在關鍵的代碼加上注釋,寫清楚需要注意什么,為什么要這么寫。
- 命名規范:這其實也算注釋的一種。命名不規范是最讓人頭疼是一件事情,比如:詞不達意,拼音英文混合雙打,object1,a,b,x,y,z等。所以最好的情況是仔細斟酌命名,讓人清楚的知道這個東東是干嘛的。
代碼不止是給人家看的,是要給機器執行并且需要滿足預期的。我們要保證程序按照我們期望的那樣執行,那就需要確保代碼是可以通過測試被覆蓋到的。可測試性是指,寫完了代碼要有單元測試(或者其他比如直接main方法)覆蓋到各個分支,絕大多數bug都可以通過單元測試這類手段來規避的。可測試性的代碼決定了程序的正確性。
外界的一切輸入都是不可信的,誰也無法保證進來數據都是正常,所以代碼里需要對各種各樣的情況做出恰當的處理。而不是出問題的時候怪別人搞事情。
代碼的高效性是指用盡量少的時間去完成一件事情,比如想要獲取一個地區數據,每次都從數據庫里查詢,實際上這類數據并不是經常發生變化,那我們就可以把它加載到內存進行讀取了。高效性的點是很多的,無法一下道來,要多寫多看多想。
都是開車,手動擋得油離配合,各種加減檔,而自動擋則是給油就走,對正常使用而言,我們自然愿意開自動擋。所以這個沒有什么好說的。
好的代碼必然是模塊化的、高內聚低耦合的。改一處代碼,只需要在修改的位置做出簡單的測試即可。而不是改一行代碼,要牽扯到很多改動,這個也是一個很大的話題。
從代碼可能無法完全定位一個人的水平,但是可以了解一個人的基本素養。其實再往深了想依然有可以挖的,這里就不上升那種層次了。
這篇文章不錯,大家可以看一下:
https://www.sdk.cn/news/4719
轉載于:https://www.cnblogs.com/liushijie/p/6181065.html
總結
- 上一篇: 《图说VR入门》——DeepoonVR的
- 下一篇: https 页面中引入 http 资源的