函数
短小
- 函数的规则是短小
- if,else,while其中代码应该只有一行
只做一件事
- 函数应该只做一件事,而且做好这件事
每一个函数一个抽象等级
函数中的所有语句都在同一抽象等级上
- 函数中混杂有不同等级,会让人迷惑
自上向下读代码
- 每个函数后边都跟着下一层级的函数
switch语句注意
- 写出短小的
switch
语句很难,switch
天生要做多件事情 - 每个
switch
语句中尽量每一个判断只有一行代码
使用描述性的名称
- 别害怕长名称,长名称有描述性
- 别害怕花时间起名字
- 命名方式要一致
函数参数
一元函数
- 最理想参数是0个,其次是1,再次是2,有足够理由才能用三个
- 一元函数的普遍形式,操作参数,转换成其他东西,输出
- 一元函数一种不普遍形式,事件,有输入无输出,需要谨慎使用
- 标识函数丑陋不堪,向函数传入boolean是垃圾做法,应该把函数一分为2
二元函数
- 比一元函数难懂
- 使用一些机制把二元转成一元
三元函数(垃圾)
参数对象
- 但是用三个以上的参数时,就需要考虑封装了,封装成对象昂
动词与关键字
writeFiled(name),说明name是个field
无副作用
分隔指令与询问
- 函数要么做什么事,要么回答什么事,二者不能一起来
例如
public boolean set(String attribute,String value); if(set("userName","unclebob")//这种写法是做了两件事了
使用异常替代返回错误码
- 使用异常来代替错误码的返回,错误处理就能从主路径代码中分离出来
抽离trycatch代码块
- try catch丑陋不堪,需要抽离
处理错误就只干一件事
别重复自己
- 代码尽量不要重复
结构化编程
- 每个代码块都应该有一个入口和一个出口
- 循环中不应该出现break或者continue,goto更不能出现
如何写出这样的函数
- 写函数一开始都冗长而复杂
- 打磨代码,分解函数、修改名称、消除重复
- 从一开按照规则来写,很难做到
- 即便没有时间打磨代码也要自己挤出时间来打磨