函数
3.1 短小
- 20行封顶最佳。
- if语句、else语境、while语境等,其中的代码块应该只有一行。函数的缩进层级不应多于一层或两层。
3.2 只做一件事
判断方法:
函数做的事是否位于该函数名下同一抽象层级。
看看该函数能否再拆出一个函数。
3.3 每个函数一个抽象层级
要确保函数只做一件事,函数中的语句都要在同一抽象层级上。
自顶向下读代码:向下规则——让每个函数后面都跟着位于下一抽象层级的函数。
3.4 switch语句
如果多个地方使用,建议使用工厂模式。
3.5 使用描述性的名称
函数名称要能说明函数做了什么事。
命名方式要保持一致,使用与模块名一脉相承的短语、名称和动词给函数命名。
3.6 函数参数
- 最理想的是零参数,尽量避免三个以上参数。
- 尽量避免向函数传入布尔类型的参数,尤其是为true时这样做,为false时那样做的情况。
3.8 分隔指令与询问
函数要么做什么事,要么回答什么事。
函数应该修改某对象的状态,或者返回该对象的有关信息。
3.9 使用异常替代返回错误码
从指令式函数返回错误代码轻微违反 了指令与询问分隔的规则。
如果使用异常替代返回错误码,错误处理代码就能从主路径代码中分离出来,得到简化。
把try和catch代码块的主体部分抽离出来,另外形成函数。