函数中尽量只执行单一的方法
这个就是一个反面教材, 一个检查密码是否合法的函数,竟然隐藏着 session init的 逻辑。 这种函数 副作用极大。 因为多数人在版本快速迭代的时候是不会检查每个函数里面的实现的。
我自己就被类似的函数坑过。
所以大家定义函数的时候 最好职责还是要单一些。只做你函数名指名的事情 多度的事情不要做。
使用异常来代替错误码
错误码 在单层逻辑的时候 是比较好使的方法 但是一旦到了多层逻辑 错误码的形式就比较讨厌了,不好使用也不好维护。
例如:
这样的代码 维护起来成本就很高了。尤其是在表单输入验证,或者级联进行crud的时候 很容易出现。
我们换一种方法来实现
不要返回null值
不管在任何时候我们写出来的函数都不要返回一个null 值,这会增加系统崩溃的概率。 尤其是对于返回list的情况, 如果找不到数据 就返回一个 没有数据的list 而不要返回一个null。
时刻检验函数的入参是否为null
在写公共函数的时候 一定记得时刻校验 函数参数是否为null,因为你无法保证别人到底会怎么调用你的函数。 但是这里依旧建议,如非必要 请不要将null 作为参数传递。
掩蔽时序耦合
这个原则 也是最近触发了一次线上故障以后 才真正理解的。 某些时候 我们的某些操作 其实是带有时序性的, 比如 做饭这件事。 他总是 遵循 买菜-洗菜-切菜-开火-炒菜 这5个基本步骤。
假设你的函数写成这样:
这个其实很难看出来 他们是有上下级依赖关系的,维护起来 万一打破了这种关系 很容易发生故障。 对于这种强依赖的顺序关系,我们其实可以依靠 返回值 来将他们串联起来。
例如:
这样每一步都依赖上一步的返回值 则可以明确的绑定依赖关系。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。