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