我设计了一个新类,它boolean isCellEmpty()
在每个抽象级别都包含相同的功能。我的Matrix
班级位于班级层次结构的底部。在上面我有GraphMainWindow
课。
我应该在哪里进行检查(例如if (i >= 0, i < xCellsCount, j >= 0
等等......)?
我设计了一个新类,它boolean isCellEmpty()
在每个抽象级别都包含相同的功能。我的Matrix
班级位于班级层次结构的底部。在上面我有GraphMainWindow
课。
我应该在哪里进行检查(例如if (i >= 0, i < xCellsCount, j >= 0
等等......)?
简单的答案是:尽可能地通用。声明这些变量的第一个可继承类应该执行检查。除非需要重写功能,否则低于该值的任何内容都应遵循超类。在您选择用于检查的继承层次结构更上一层的类中,处理检查的方法可能应该通知尚未实现覆盖版本的子类它们正在获得默认(并且可能无用)行为. 在这种情况下,我经常提出异常。
好问题,我自己也想了很多次。答:在最低层。这样,错误将永远不会被发现。您仍然可以在算法过程有意义的更高级别检查错误,但最低级别是最重要的。
这有一些例外。例如,如果错误是通过包含应用程序的消息报告的,并且您希望在最低级别发生许多错误。但这些并不常见,如果你觉得上面的规则打扰了你,你可以改变它。
所以简而言之,你有这个类图:
Matrix ( a
^ ^
| |
... b means : b inherits a)
^
|
图形主窗口
您有一个isCellEmpty
在基类和每个继承的方法中都可以找到的方法。如果 isCellEmpty
用于进行检查的数据的数据结构自上课以来没有改变Matrix
,那么您可以在Matrix
最通用的类中进行检查。
如果您更改数据结构,Matrix
您应该在更改数据结构的类中实现测试。
问候