1

我设计了一个新类,它boolean isCellEmpty()在每个抽象级别都包含相同的功能。我的Matrix班级位于班级层次结构的底部。在上面我有GraphMainWindow课。

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

4

3 回答 3

1

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

于 2012-04-22T16:12:51.067 回答
1

好问题,我自己也想了很多次。答:在最低层。这样,错误将永远不会被发现。您仍然可以在算法过程有意义的更高级别检查错误,但最低级别是最重要的。

这有一些例外。例如,如果错误是通过包含应用程序的消息报告的,并且您希望在最低级别发生许多错误。但这些并不常见,如果你觉得上面的规则打扰了你,你可以改变它。

于 2012-04-22T16:13:11.690 回答
1

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

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

图形主窗口

您有一个isCellEmpty在基类和每个继承的方法中都可以找到的方法。如果 isCellEmpty用于进行检查的数据的数据结构自上课以来没有改变Matrix,那么您可以在Matrix最通用的类​​中进行检查。

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

问候

于 2012-04-22T16:18:15.040 回答