突然想到: 函数的输入应该由写这个函数的人来保证有效性还是调用函数的人?

比如说一个做除法的函数,应该是这个函数本身就判断除数为零的情况还是由调用函数的人来保证输入数据的有效性?看起来两个都可以~哪个较优?

send from my openSUSE

这个。。。不该看具体情况。

以我无任何开发经验的小白的想法,是做除法函数本身来判断。因为函数可能多次调用,如果调用函数来判断,那样每次调用都要判断。不会有很多重复代码,而且代码变长。

但我总觉得到时候肯定会考虑多方面的吧,不会那么容易的。

我觉得应该由写函数的人来保证,对调用的人来说只要填写参数就可以了,参数不对的时候函数自己进行处理或者设法告诉调用者哪里出问题了,否则就像楼上说的,如果要在 100 个不同的地方调用它难道还要做 100 遍保证输入有效的处理或者验证工作?使用函数的一大目的就是减少重复代码,自然把每次都要做的有效性验证也放到函数里面更加科学。

当然,视情况而定有可能需要写成多个函数,不过依然是写函数的人来保证有效性的,调用的人只管调用就好了。

内部代码由调用者确保参数的正确。
API 部分由函数本身在入口判断参数是否有效。

需要效率的情况下,由调用者来保证,比如在 Python C API 中,大量函数不接受 NULL 指针,但是它本身是不判断的,因为逐层判断太浪费了。调用者只要在数据来源处判断一次就可以了。

至于所说的重复代码问题,如果由函数自身判断,调用者不是也还要判断调用是否成功么?