-----------------Clean Code Chapter3 Function--------------------

==================shuxiangguo=======================

1、函数的第一规则是要短小。第二规则是还要短小。

2、函数应该只做一件事。做好这件事。

3、每个函数在一个抽象层级

  自定向下读代码:向下规则-->让每个函数后面都跟着位于下一抽象层级的函数。

4、使用描述性的名称。

5、函数参数:最理想的参数数量是零。从测试的角度来看,参数越多,考虑的测试情形就越多。

6、分割指令与询问。函数要么做一件事,要么回答什么事,但二者不可得兼。

7、使用异常替代返回错误码

  如果使用异常代替返回错误码,错误处理代码就能从主路径代码中分离出来,得到简化。

  例:

不好的代码:
if(deletePage(page) == E_OK) {
    if(registry.deleteReference(page.name) == E_OK) {
        if(configKeys.deleteKey(page.name.makeKey()) == E_OK) {
            logger.log("page deleted"):
        } else {
              logger.log("configKey not deleted"):
     } else {
           logger.log("deletedReference from registry failed"):
     } 
} else {
    logger.log("delete failed"):
    return E_ERROR;
}

好的代码:
try {
    deletePage(page);
    registry.deleteReference(page.name);
    configKeys.deleteKey(page.name.makeKey());
} catch(Exception e) {
    logger.log(e.getMessage);
}

 8、抽离try/catch代码块

  例:

public void delete(Page page) {
    try {
        deletePageAndAllReferences(page);
    } catch(Exception e) {
        logError(e);
    }
}



private void deletePageAndAllReferences(page) throws Exception {
    deletePage(page);
    registry.deleteReference(page.name);
    configKeys.deleteKey(paga.name.makeKey);
}

private void logError(Exception e) {
    logger.log(e.getMessage);;
}

 将try/catch里面的代码用函数调用取代,实现代码分离。

原文地址:https://www.cnblogs.com/shuxiangguo/p/5670239.html