我应该在什么级别进行检查?

时间:2012-04-22 16:03:29

标签: oop

我设计了新类,它在每个抽象级别包含相同的函数boolean isCellEmpty()。我的类层次结构底部有Matrix类。在顶部,我有GraphMainWindow类。

我应该在哪里进行检查(例如if (i >= 0, i < xCellsCount, j >= 0等等......)?

3 个答案:

答案 0 :(得分:1)

简单的答案是:在最通用的级别上。声明这些变量的第一个可继承类应该执行检查。除非需要覆盖功能,否则下面的任何内容都应该遵循超类。在您选择用于检查的继承层次结构的一个类中,处理检查的方法可能应该通知尚未实现被覆盖的版本的子类,它们将获得默认(并且可能无用)行为。在这种情况下,我经常提出异常。

答案 1 :(得分:1)

好问题,多次对自己感到疑惑。答:在最低级别。这样,错误永远不会被忽视。 您仍然可以检查算法过程有意义的更高级别的错误,但最低级别是最重要的。

这有一些例外。例如,如果通过包含应用程序的消息报告错误,并且您希望在最低级别发生许多错误。但这些并不常见,如果你觉得它让你感到不安,你可以弯曲上述规则。

答案 2 :(得分:1)

简而言之,你有这个类图:

Matrix        ( a
   ^            ^
   |            |
  ...           b means : b inherits a)
   ^
   |

GraphMainWindow

您有一个方法isCellEmpty,可以在基类和每个继承的方法中找到。 如果isCellEmpty用于执行检查的数据的数据结构自Matrix类以来没有更改,则在Matrix类中执行它们,这是最通用的类​​。

如果从Matrix更改数据结构,则应在更改数据结构的类中实现测试。

此致