void foobar(x, y, z) {
px = get_x(x);
if (0 != check_x(px))
return ERROR;
py = get_y(y);
if (0 != check_y(py))
return ERROR;
if (0 != z)
return ERROR;
}
经常会看到类似上面的代码,每次看到都会吐槽:写这样代码的人,肯定没有动脑、不用心。
这样的代码往往是编码的人,简单地、机械地根据业务需求说明书,把业务逻辑翻译成代码逻辑,整个翻译过程中就没有考虑过代码的效率问题 —— 而这也是我认为的“码农”和“程序员”最基本的区别。
上面的代码中,如果get_x/y或check_x/y里面做了很复杂的计算,然后'z'不等于零,函数还是返回错误,前面一堆复杂的计算岂不是白做了?因此,对于这种有各种不同检查逻辑的函数,应该尽量把简单的逻辑往前放,复杂的逻辑往后面放,以减少不必要的计算,浪费系统的资源。