代码是否应该阻止逻辑上无效的呼叫,即使不会造成伤害?

Tra*_*rap 3 error-handling exception

这个问题一直困扰着我.

让我们设想一个代表资源的类,为了能够使用这个资源,首先需要在其上调用'Open'方法,否则将抛出InvalidOperationException.

我的代码是否还要检查是否有人试图打开已经打开的资源,或者关闭已经关闭的资源?

代码是否应该防止逻辑上无效的调用,即使不会造成任何伤害?

我认为以这种方式编程有助于在另一方编写更好的代码,但我觉得我可能会承担太多责任并影响可重用性.

你们有什么感想?

编辑:

我不认为这可以被称为防御性编程,因为它不会让任何可能的错误使用滑动,并且将抛出另一个InvalidOperationException.

Ikk*_*kke 6

这被称为防御性编程.这是一个很好的编程实践,因为您确保您的应用程序不会因不当行为而崩溃.

在调用另一个方法之前应首先调用某个方法,这不是一个好的编程实践.它增加了很多复杂性,这更好地由类本身处理.

这称为顺序耦合.这篇维基百科文章说,如果这是一个不好的做法,它取决于上下文,但它不应该在处理不当时崩溃.有时需要抛出异常以使事情变得清晰.