《Clean Code》之函数

1. 短小

每个函数都一目了然。每个函数都只做一件事。并且每个函数都依序把你带到下一个函数。这就是函数应该达到的短小程度。函数的代码块缩进层级不该多于一层或两层。这样的函数易于阅读和理解。

2. 只做一件事

函数应该做一件事。做好这件事。只做一件事。函数只是做了该函数名下同一抽象层上的步骤,则函数还是只做了一件事。

3. 每个函数一个抽象层级

自顶向下读代码——向下规则:要让每个函数后面都跟着位于下一抽象层级的函数,这样,在查看函数列表时,就能按照抽象层级向下阅读了。

4. 使用描述性名称

长而具有描述性的名称要比短而令人费解的名称好。长而具有描述性的名称,要比描述性的注释好。

5. 函数参数

最理想的参数数量是零。参数与函数名处在不同的抽象层级,它要求你了解目前并不特别重要的细节。从测试角度看,参数越多越难测试。

6. 无副作用

函数承诺只做一件事,但还是会做其他被藏起来的事,这些事都是具有破坏性的,可能导致古怪的时序性耦合及顺序依赖。

7. 分割指令与询问

函数要么做什么事,要么回答什么事,但二者不可兼得。

8. 使用异常替代返回错误码

使用异常处理替代返回错误码,错误处理代码能从主路径代码中分离出来。

  • 抽离try/catch代码块,它们把错误处理与正常流程混为一谈。下面的写法更优雅:
   public void delete(){
       try{
           deletePage();
       }
       catch (Exception e){
           logError(e);
       }
   }
   private void logError(Exception e)
   { }
  private void deletePage()
   { }

  • 错误处理就是一件事

9. 别重复自己

10. 如何写出这样的代码:重构!!

Leave a Reply

 

 

 

You can use these HTML tags

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>