乙個函式只做一件事

2021-08-07 12:26:47 字數 819 閱讀 4835

最近做code review,有的**是一些單獨的職能,建議開發童鞋抽取為乙個單獨的方法。 開發童鞋認為一些小的功能點,如果也抽取單獨的方法,**層級會太深。

這兩年自己寫**或者做**重構,有時候也會有困惑,什麼內容適合抽取乙個方法,什麼內容適合在乙個方法內。

最近在重讀clean code這本書,上周末看到一些內容,感覺找到了答案。

clean code中文版3.2節,原文部分內容摘錄如下:

函式應該做一件事。做好這件事。只做一件事。

問題在於很難知道那件事該做的是什麼。**清單3-3只做了一件事,對嗎?其實也很容易看做是三件事:

(1) 判斷是否為測試頁面;

(2) 如果是,則容納進設定和分拆步驟;

(3) 渲染成html。

那件事是什麼?函式是做了一件事呢,還是做了三件事?注意,這三個步驟均在該函式名下的同一抽象層上。

......

如果函式只是做了該函式名下同一抽象層上的步驟,則函式還是只做了一件事。編寫函式畢竟是為了把大一些的概念拆分為另乙個抽象層上的一系列步驟。

3-3 **清單

public static string renderpagewithsetupsandteardowns(pagedata pagedata, boolean issuite) 

return pagedata.gethtml();

}

我的理解:函式中的**,做同乙個層級上的事情,如果不是同乙個層級,則需要進行抽取。和書本身的章節目錄道理類似,章節是並列的,每章下面的小節是更細的劃分,是對章節拆分為更小概念的一些列步驟。

乙個函式只做一件事

過去我以為這句話只是一種好的程式設計習慣,以為即便是不遵守照樣編出正確的程式。而實際上並非如此,不遵循這條規則幾乎無法編出正確的程式。這個法則的重要性不僅僅是可讀性 可維護性,更是深深影響了程式的正確性。下面乙個具體的例項展示 乙個函式做多件事 的後果,這個例項是乙個下五子棋的大概框架 whoset...

長期堅持做一件事

閱讀很容易,但每天堅持閱讀20頁,堅持十年以上呢?健身也不難,但每天健身半小時,堅持十年以上呢?寫點東西很容易,但每天寫作,堅持十年以上呢?思考一件事很容易,但每天堅持反思自己的思維邏輯,堅持十年以上呢?所有很容易的事,很簡單的能力,加上乙個時間軸,就會有巨大的威力。因為這些動作就會成為習慣,而習慣...

不是一件事

紀念下第一次雜客。之所以稱之為雜客,是因為不知道這個blog會成為什麼,暫時命這個名字吧。想起最近的事情,不是加班,就是加班,這周好不容易有兩天在家裡休息,去又頹廢了一天,頹廢後的那一刻,卻突然感覺到不安的感覺。哎,不管了,不安就不安吧,下次不這樣了,睡覺先 今晚好像是最後的晚餐,可能是最後一次在這...