|
|
1
13
当新程序员正在学习如何编写函数时, 先决条件 和 后置条件 经常被介绍。前提条件是必须满足的假设,才能使您的方法正常工作。后置条件是您的方法在执行后对系统状态的保证。
我认为打电话给
现在,如果调用了方法
|
|
|
2
7
遵循最小惊喜原则,并抛出异常。 我是这样想的:如果我正在写代码,并且在代码中包含了一个错误,它向deletefile函数传递了一个不正确的路径,一个如此不正确的路径,以至于它永远不可能存在,我会期望deletefile抛出,以表明我做错了什么。 如果需要,可以创建一个接受名为throwonfilenotexist的参数或其他参数的重载,如果设置为false,它将不会在这种情况下抛出。但我认为这是罕见的异常情况。 |
|
|
3
4
这就是例外的原因。 引发新文件不texistException |
|
|
4
3
如果你开始失败,并且成功地做到了,你做了什么? 我认为由客户决定该怎么做。如果要求函数删除不存在的文件,则引发异常。然后,客户机可以捕获该异常并决定文件是否不存在或是否已成功删除,最终结果相同,并且可以正常进行。 或者,如果文件丢失是一种预期的可能性,也就是说不是异常的,那么您可以返回一个故障状态,调用方可以随意忽略该状态:),这同样会将决定留给客户机。 在任何一种情况下,如果您遵循一个函数应该做一件事情并且做得很好的原则,那么客户机可以为手头的任务以任何适当的方式将函数调用串在一起,并且成功或失败将变得更加细化。 如果函数没有成功完成,则不应该返回SUCCESS。不管最终结果是否一致。这样疯狂的谎言。 |
|
5
1
您的示例是三元布尔值的完美示例: True/False/FileNotFound .
更新
我更喜欢避免抛出异常并维护返回代码。对于代码无法处理的情况,存在imho异常类型。您的示例方法足够小,只返回false就足够好了。由调用代码决定原因。 像deletefile这样的简单方法失败的原因有很多。文件不存在,您没有安全权限,文件被锁定,文件系统被延迟等。每个文件都应该有自己特定的返回失败代码。 然后由调用代码决定“哦,文件不存在,没关系”。或者,“你说我没有权利是什么意思?!?中止!!” 要点是:除非方法可以实际执行,否则不要返回true。 |
|
|
6
0
函数应该抛出一个异常(或返回一个失败值,无论什么)。这个 用户 不过,应该会看到成功。 噢,调用函数的程序员应该知道真相。但是,用户界面向用户呈现的内容更取决于总体功能,我想是目标用户。 以您的“删除文件”为例——在正常情况下,我希望您的应用程序只是从列表中删除该文件或其他文件,然后继续——让用户看到该文件已被删除;他们可能不关心它是如何发生的。 (正常情况下),因为 一些 应用程序,这可能很重要。) |