被认为是有害的?

时间:2012-02-22 01:32:58

标签: java oop architecture refactoring

我正在查看一些大量使用Java instanceof运算符的代码。我会反对细节的诱惑,因为这是一个普遍的问题。 instanceof让我想起了c ++的动态演员,以及我很久以前读过的关于它的建议,如果你认为你需要它,可能你的模型已经关闭了。这仍然是传统智慧吗?它适用于Java的instanceof吗?

2 个答案:

答案 0 :(得分:12)

是的,你走在正确的轨道上。虽然instanceof肯定有其用途,但大量使用通常表明您的班级设计有缺陷。

答案 1 :(得分:3)

在Java中,可以/应该使用泛型来减少instanceof个关键字的数量。这样,只需要检查编译时未知的少数几个。也就是说,instanceof不是goto之类的东西 - 它不会让你的控制流程变得太乱(尽管如果你不小心它会引入许多额外的变量)。

我经常使用instanceof,但如果有很多,那么我会认为它是代码味道。诀窍是想出更好的东西;如果可以,那么使用instanceof可能是错误的。我不知道有关一般情况下使用是好还是坏的方案。 instanceof之后的演员可能比关键字本身更容易受到伤害。