Java:Override注释对于现代IDE来说是无用的吗



在一个不错的IDE中编程时,是只有我一个人,还是Java的Override注释实际上毫无用处?

是的,我知道Override注释可以防止我通过拼错方法名称或弄乱方法参数而意外地不覆盖超级方法。然而,常识告诉我,这在现代IDE中不太可能发生,原因如下:

  • IDE在编辑器的左侧显示一个标记(即一个小图标),指示该方法是否被重写/重写。因此,不需要显式的覆盖注释来显示覆盖意图
  • 如果我要重命名一个方法,但我看到这样的覆盖标记,我永远不会直接编辑方法名称——我本能地伸手去按键盘快捷键,打开IDE的重命名助手。同样,如果我打算更改方法签名,并且我看到了覆盖标记,我会本能地使用IDE的方法签名助手,而不是手动进行(非常简单的情况除外)。因此,方法名称和签名几乎总是正确更改的,因此添加Override注释(在我看来)只不过是一种偏执和无用的安全检查——就像在各处散布"final"一样

当然,如果您必须在Notepad或其他地方编写Java代码,Override注释显然会有所帮助。但我的观点是,在现代IDE中,这个注释所提供的安全性的提高不值得可读性的降低。有什么意见吗?

你必须相信自己才能看到这些标记。它有人的因素,人是容易犯错的。根据我个人的经验,我经常忽视那些警告和"标记"。另一方面,编译器要严格得多,如果你用Override注释一个方法,它将确保你真的在重写一个超类方法。

如果您@覆盖未被覆盖的内容,这在IDE中是显而易见的。但是,如果删除一个方法或在父级中更改其签名,则并非所有使用Override此方法签名的地方都是显而易见的。使用IDE执行删除/更改会有所帮助,但如果没有签出并使用正确的模块/版本,则可能无法获得所有引用。

是的,它几乎没有用。对于那些觉得它有用的人,对他们有好处。但他们用来证明这一点的情景并不现实。事实是,许多人不使用@Override,而且他们从未遇到过它应该解决的任何问题。

python老兄:在重写一个方法时,您没有提到键盘快捷键(IntelliJ中的Ctrl-O)。我从不手动键入我正在重写的方法的签名,所以一开始就不会有拼写错误。

最新更新