一个函数只做一件事

写在前面的话

最近做code review,有的代码是一些单独的职能,建议开发童鞋抽取为一个单独的方法。 开发童鞋认为一些小的功能点,如果也抽取单独的方法,代码层级会太深。
这两年自己写代码或者做代码重构,有时候也会有困惑,什么内容适合抽取一个方法,什么内容适合在一个方法内。
最近在重读clean code这本书,上周末看到一些内容,感觉找到了答案。

一个函数只做一件事

clean code中文版3.2节,原文部分内容摘录如下:

    函数应该做一件事。做好这件事。只做一件事。
    问题在于很难知道那件事该做的是什么。代码清单3-3只做了一件事,对吗?其实也很容易看做是三件事:
    (1) 判断是否为测试页面;
    (2) 如果是,则容纳进设置和分拆步骤;
   (3) 渲染成HTML。
   那件事是什么?函数是做了一件事呢,还是做了三件事?注意,这三个步骤均在该函数名下的同一抽象层上。
   ......
   如果函数只是做了该函数名下同一抽象层上的步骤,则函数还是只做了一件事。编写函数毕竟是为了把大一些的概念拆分为另一个抽象层上的一系列步骤。

3-3 代码清单

public static String renderPageWithSetupsAndTeardowns(PageData pageData, boolean isSuite) {
    if (isTestPage(pageData)) {
        includeSetupAndTeardownPages(pageData, isSuite);
    }
    return pageData.getHtml();
}    

我的理解:函数中的代码,做同一个层级上的事情,如果不是同一个层级,则需要进行抽取。和书本身的章节目录道理类似,章节是并列的,每章下面的小节是更细的划分,是对章节拆分为更小概念的一些列步骤。

你可能感兴趣的:(道(方法,理论))