2012-04-22 73 views
1

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

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

+0

感谢您的回答!但是,我很抱歉,当我描述我的层次结构时,我并不意味着“继承”关系。我的意思是'GraphMainWindow'使用'Graph',它使用'GraphModel',它是'MatrixGraphModel'的超类,它使用'Matrix'。 – 2012-04-22 16:26:59

+0

“细胞”在整个层次结构中是否意味着相同的东西? 'isCellEmpty()'测试同样的事情吗? – 2012-04-22 16:57:52

+0

有点不同的目的。但总的来说它确实如此。 (在所有层次结构中,我执行相同的检查。) – 2012-04-22 17:08:27

回答

1

好问题,想知道它自己很多次。答案:在最底层。这样,错误永远不会被漏检。 您仍然可以在算法过程有意义的较高级别检查错误,但最低级别是最重要的。

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

1

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

1

所以把它概括地说你有这样的类图:

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

GraphMainWindow

您有在基类中,每一个继承的方法isCellEmpty。 如果数据datastruct是isCellEmpty用做自Matrix类的检查不会改变,你在Matrix类,这是最通用的一个做他们。

如果你改变了数据结构,因为Matrix一个你应该实现在改变了数据结构类测试。

Regards

相关问题