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