1喷户、短小
函數(shù)的第一規(guī)則就是短型倌恰;
20行的函數(shù)是最佳的摩骨;
每個(gè)函數(shù)只做一件事通贞,并且函數(shù)都以順序帶到下一個(gè)函數(shù),這就是函數(shù)應(yīng)該到達(dá)的短小程度恼五。
2昌罩、只做一件事
函數(shù)應(yīng)該只做一件事。做好一件事灾馒。只做這一件事茎用。
判斷函數(shù)是否只做一件事,看是否還能在拆分出一個(gè)函數(shù)睬罗;
3轨功、每個(gè)函數(shù)一個(gè)抽象層級(jí)
要確保函數(shù)只做一件事,函數(shù)中的語(yǔ)句都要在一個(gè)抽象級(jí)上容达。
自頂向下讀代碼古涧;
4、switch語(yǔ)句
用抽象工廠來(lái)代替花盐;
5羡滑、使用描述性的名稱
函數(shù)的名字正好描述了該函數(shù)所做的事;要做到見(jiàn)名知意算芯;
6柒昏、函數(shù)參數(shù)
盡量避免三個(gè)參數(shù)以上;參數(shù)越多測(cè)試覆蓋所有可能的值的組合就越多熙揍;
如果參數(shù)過(guò)多就該將參數(shù)封裝成類了职祷;
7、無(wú)副作用
還是“只做一件事”的原則届囚;
如果該方法做了兩件事一定要在函數(shù)名中體現(xiàn)有梆,否則就會(huì)發(fā)生不可預(yù)知的錯(cuò)誤;
8意系、分割指令與詢問(wèn)
9泥耀、使用異常代替返回錯(cuò)誤碼
使用異常代替錯(cuò)誤碼,錯(cuò)誤的處理代碼就能從主路徑代碼中分離出來(lái)昔字。得到簡(jiǎn)化爆袍;
抽離出try/catch代碼塊首繁,做成函數(shù);使用異常代替錯(cuò)誤碼陨囊,新的異常就可以從異常類派生出來(lái)弦疮,無(wú)需重新編譯或重新部署;
10蜘醋、別重復(fù)自己
如果過(guò)多的重復(fù)代碼就應(yīng)該抽取出來(lái)胁塞;
面向方面編程(Aspect Oriented Programming)、面向組件編程(Component Oriented Programming)也都是消除重復(fù)的一種策略压语。
總結(jié)一句:消滅重復(fù)
11啸罢、結(jié)構(gòu)化編程
12、如何寫(xiě)出這樣的函數(shù)
分解函數(shù)胎食、修改名稱扰才、消除重復(fù)
總結(jié):
大師級(jí)程序員把系統(tǒng)當(dāng)作故事來(lái)講衙傀,而不是當(dāng)作程序來(lái)寫(xiě)呢蛤。
真正的目標(biāo)在于講述系統(tǒng)的故事开呐,編寫(xiě)的函數(shù)必須干凈利落地拼裝在一起蜓肆,形成一種精確清晰地語(yǔ)言,幫你講故事悄雅。