文章同步於it邦
前言
第三天就要來個硬的
這次將要介紹Clean Code
之後會依序介紹Clean Coder以及Clean Architecture
Clean Code這本書我相信很多公司都有擺著當精神象徵
這個主題過去也有人介紹過,這次會從裡面的案例去做延伸探討
而且每個人看過的想法也不太一樣
書中Java的範例我就不多做說明了,因為我不會寫Java
如果沒有讀過這本書的朋友,尤其是新手或是Coding Style不太好的,強烈建議看過這本書
他會對日後的你非常有幫助
今天我們先從第一章節到第五章吧(迷之音: 我有點擔心我講太多…
第二章到第五章分別是
- 有意義的命名
- 函式
- 註解
- 編排
這些單元會放在一起講解
Ch.1 - 無暇的程式碼
我們先有一個共識:
程式碼品質是確實會影響維護以及開發效率的
舉個例子:
1 | class User |
上面這些最明顯有問題的就是命名
- 屬性的命名,應該命名為user_name,而不該是name,前者我們可以很清楚的知道這個是user的name,而不是我還需要去對照class的名稱再來聯想
- 函式也是,應該命名為connectServer
***Explicit is better than implicit.
- The Zen of Python
意旨明瞭的程式碼(user_name, connectServer)比隱晦(name, connect)的還要好***
態度
我相信很多人都體驗過,明明一個幾分鐘的事情,卻因為架構、程式碼太髒亂而多花了很多時間
很多人(我一開始也是)都會抱怨說,阿誰誰誰一直修改怎樣怎樣的
但這件事情本身就沒有錯,因為人會一直改變,他們的需求也是
為什麼我們的架構沒辦法改變,或是做得更有彈性一點,來因應這些需求
童子軍規則
程式碼必須持續地保持整潔,這個原則不會因為時間而被改變
美國童子軍有一個簡單的規則
離開營地前,讓營地比使用前更加乾淨。
- Clean code(p.16)
也就是說我們每次在撰寫程式碼時,必須保持乾淨整潔。
Ch2~5 程式碼的部分
有意義的命名
我們掌握幾個原則
- 名符其實,例如你的function是在做兩數相加(假設只是個單純的數學運算),你可以為他命名為
addTwoNumber
- 有意義的區別,假設你有兩個很相似的class,那info、data、數字排序(n1, n2)這些都屬於無意義的命名,因為根本分不出來是在幹嘛
- 類別應該使用名詞或名詞片語,函式應該使用動詞或動詞片語
範例
1 | class StudentController extends Controller |
函式
我們最需要在函式上注意的就是兩點:
- 簡短
- 一次只做一件事
我們舉個MVC框架最常遇到的問題,Controller已經大包到幾百幾千行去了
此時我們就可以把Controller裡面的各種功能拆給其他function去執行
保持Controller的整潔
註解
這一部分在我認為,其實最好的註解就是程式碼,也就是說,你的程式碼可以讓人一看就懂,那註解就會顯得有些多餘。
我們就舉例書中需要寫註解的情況吧
- 解釋做某個決定的原因
- 對後果的告誡
- 代辦事項
編排
簡單來說就是程式的排版
例如:等號之間空格、上下間距等等
另外盡量讓變數靠近使用的地方被宣告,但因為函示非常簡短的關係,所以都會在最上方做宣告
結語
只能說Clean Code這本書要在三天內講完,真的太困難了,只能提取其中的一部分來說明
強烈建議沒有看的人去買一本來看
明天繼續講其他章節
希望我這三天內可以盡可能地講完
其實我們就盡可能地掌握幾兩個原則,就是讓人一看就懂跟看得舒服
掌握這兩個原則就不太會有寫出髒扣的問題了
參考資料
Clean Code(ch.2 ~ 5)