短小
函數(shù)的第一規(guī)則是要短小赡模,第二規(guī)則是還要更短小。20行封頂最佳
if語(yǔ)句查吊、else語(yǔ)句谐区、while語(yǔ)句等,其中的代碼塊應(yīng)該只有一行逻卖。
一個(gè)函數(shù)調(diào)用語(yǔ)句宋列,塊內(nèi)調(diào)用的函數(shù)應(yīng)擁有較具說(shuō)明性的名稱。
這也意味著函數(shù)不應(yīng)該大到足以容納嵌套結(jié)構(gòu)评也。所以函數(shù)縮進(jìn)的層級(jí)不應(yīng)多于一層或兩層炼杖。這樣的函數(shù)易于閱讀和理解。因此當(dāng)我們?cè)谝粋€(gè)函數(shù)內(nèi)寫的代碼行數(shù)過(guò)多時(shí)盗迟,就要想辦法將一些代碼抽出來(lái)坤邪,減少代碼閱讀的復(fù)雜性。
只做一件事
函數(shù)應(yīng)該做一件事罚缕。做好這件事艇纺。只做這件事。
判斷一個(gè)函數(shù)是否只做一件事
- 看代碼中是否有處于多個(gè)不同抽象層級(jí)的步驟邮弹。
- 能否在拆出一個(gè)函數(shù)出來(lái)
有時(shí)候我們會(huì)在一個(gè)函數(shù)中做多件事喂饥,就是應(yīng)為我們?cè)诮o函數(shù)命名時(shí)的隨意,搞不清楚這個(gè)函數(shù)真正的功能是啥肠鲫。
每個(gè)函數(shù)一個(gè)抽象層級(jí)
要確保函數(shù)只做一件事员帮,函數(shù)中的語(yǔ)句都要在同一抽象層級(jí)上。
向下規(guī)則:讓代碼擁有自頂向下的閱讀順序导饲。每個(gè)函數(shù)后面都跟著位于下一抽象層級(jí)的函數(shù)捞高,這樣一來(lái)氯材,在查看函數(shù)列表時(shí),就能循抽象層級(jí)向下閱讀了硝岗。
類似這樣的程序氢哮,像是一系列【要】(原文是To)起頭的段落,每一段都描述當(dāng)前抽象層級(jí)型檀,并引用位于下一抽象層級(jí)的后續(xù)【要】起頭段落:
- 要容納設(shè)置和分拆步驟冗尤,先容納設(shè)置步驟,然后納入測(cè)試頁(yè)面內(nèi)容胀溺,再納入分拆步驟
- 要容納設(shè)置步驟裂七,如果是套件,就納入套件設(shè)置步驟仓坞,然后再納入普通-
設(shè)置步驟- 要容納套件設(shè)置步驟背零,先搜索“SuiteSetup”頁(yè)面的上級(jí)繼承關(guān)系,再添加一個(gè)包括該頁(yè)面路徑的語(yǔ)句
- 要搜索...
這是一個(gè)讓函數(shù)寫更少代碼的方法
使用描述性的名稱
長(zhǎng)而具有描述性的名稱无埃,比短而令人費(fèi)解的名稱+描述性的長(zhǎng)注釋好徙瓶。
命名方式要保持一致
如
includeSetupAndTeardownPages、includeSetupPages嫉称、includeSuiteSetupPage和includeSetupPage
函數(shù)參數(shù)
最理想的參數(shù)數(shù)量是零侦镇,其次是一,再次是二织阅,盡量避免三壳繁。
抽離Try/Catch代碼
將try/catch代碼隔離出來(lái),避免影響主程序邏輯蒲稳。
Demo:
Try{
DeletePage(page);//DeletePage是一個(gè)方法
}Catch(Exception e){
LogError(e);//LogError是一個(gè)方法
}
錯(cuò)誤處理就是一件事氮趋。 try/catch總是單獨(dú)出現(xiàn)的,里面可以最好不要包含普通語(yǔ)句江耀,如上例剩胁。 別重復(fù)自己,重復(fù)是一切邪惡的根源祥国。這個(gè)顯然很重要昵观,但是并不容易做到。重復(fù)有明顯的重復(fù)舌稀,有隱蔽的邏輯重復(fù)啊犬,結(jié)構(gòu)重復(fù)”诓椋總之如果能夠在消除重復(fù)上更進(jìn)一步觉至、多做一些,對(duì)個(gè)人職業(yè)生涯和公司都有好處睡腿,并且可以很快感受到语御。