我怀疑是否存在明确的答案,但我对这个主题的不同意见很感兴趣。因此,一个共同的维基。当您的方法失败,但成功...您会返回失败还是成功?
您正在设计一种方法。它有一个目的,这就是为什么你设计它的原因。呼叫者使用你的方法,但方法失败了,但是,你看,最终的目的是尽可能地消除方法的存在 - 这要归功于你选择的超出你的控制范围或某种魔法的外部环境。您是否将这种情况报告给主叫方是失败还是成功?
让我们选一个简单的例子。您正在编写DeleteFile
函数。它采用文件路径并删除文件。有人调用这个函数,提供一个路径。该函数查找文件,但它不存在。这不是一个权限问题或什么的,该文件是真正失踪。也许另一个进程在微秒之前删除它,也许它从来没有存在过。该函数未能完成其任务,因此它必须报告失败......但用户调用此函数的唯一原因是确保文件不存在,并且,瞧,它不会,所以它是一个成功。
我预计答案就像“只是在你的返回值中更加冗长”,我很乐意返回一个详细的结果作为补充信息,但是你会返回什么(以及为什么)作为主要成功标志功能,成功还是失败?用BUT_DOES_NOT_EXIST_ANYWAY的附加标志是否为FALSE,还是用BUT_THANK_SOMEONE_ELSE标志为TRUE?
编辑
请不要给出答案,仅适用于上面的例子。我总是在询问一些情况,包括何时该方法没有参数,或者出于某种其他原因无法以错误的方式调用它。
非常好点但我更感兴趣的情况下提供了一个无效参数的方法是不是一个问题一样,想象一种根本没有参数的方法 – GSerg 2010-02-03 22:23:56