如何写一个好的方法-读Clean Code 有感
?
針對方法,文中提到了幾個規(guī)則,我認(rèn)為比較有價值的幾個列在下面。
1.? ? ? 短小。好的方法是只做一件事情。
? ? ? ? 那么如何判斷一個方法是做了一件事情呢?根據(jù)Clean Code的描述,是指的方法所作的事情在同一個抽象層級上。比如?Render page with setup and teardown,這個方法是在Render?一個page,它有兩個步驟,這兩個步驟又是在同一個抽象層級上,所以分別各為一個函數(shù)。
?renderPageWithSetupAndTearDown(){
????????????????….
????????????????renderPageWithSetup();
???????????????renderPageWithTearDown();
….
}
還有另一個原則,那就是看看函數(shù)是否可以再進行拆分。
?我的一個實踐就是從業(yè)務(wù)角度描述這個函數(shù)所作的事情,如果一句話能夠描述清楚,那么它所作的就是一件事情。如果描述不清楚,那就需要進行拆分。
??
2.? ? ? ??不要重復(fù)自己
?
3.? ? ? ??要有一個好名字,能夠準(zhǔn)確描述它所要表的業(yè)務(wù)含義。
最近有這樣一個場景:
收到一個請求,檢查請求中攜帶的ticketId是否在數(shù)據(jù)庫存在,如果存在需要刪除,如果不存在將請求導(dǎo)航到登錄頁面。
?從業(yè)務(wù)角度來講,是檢查請求中TicketId是否合法,合法就將請求中的user放到Session中隨后使其其無效,否則將請求導(dǎo)航到登錄頁面。而從實現(xiàn)角度是檢查數(shù)據(jù)庫里是否存在這個ticketid,如果存在就刪除。這個方法一開始也是這么命名的,CheckAndRemove。很明顯但我們看到這方法的時候只能知道這個方法是在檢查刪除,但是針對什么樣的場景和上下文呢,一點都沒有得到。這個從實現(xiàn)角度的命名不能反映它真正想要表達的業(yè)務(wù)邏輯,后來我們將它改為Validateticket。
ValiateTicket(Guid ticketId){
????????????????If(IsTicketValid()){
????????????????????????????????PutUserInSessionAndDeactivateTicket();
}
?redirectToLogin();
}
?
肯定還有更好的命名。不過這個名字相對checkAndRemove更能表達一些業(yè)務(wù)的含義,在重構(gòu)的時候就不至于迷失了方向。我們可以在有了新的想法的時候再對其進行重構(gòu)。
?
轉(zhuǎn)載于:https://www.cnblogs.com/adudu/archive/2011/09/01/2162033.html
總結(jié)
以上是生活随笔為你收集整理的如何写一个好的方法-读Clean Code 有感的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Visual Studio常用小技巧[备
- 下一篇: “豆瓣酱”之用户,场景,功能