注释没有实现的方法
Annotating methods with no implementation
为了编写干净漂亮的代码,我一直在寻找一个问题的答案,这个问题在记录我的最新项目时突然出现。
通常会有一个抽象 class 或接口,其中包含需要实现的方法;偶尔,继承这些方法的 class 有其他特定和独特的方法,使那些继承的方法过时,因此永远不会被引用。
为避免在未使用功能的地方添加功能,我将这些过时的继承方法留空,并评论它们为何如此。
尽管如此,我还是觉得我应该做的更多,但除了给它弃用的注释之外,我无法给出答案。
这将确保任何尝试使用该方法的人都会意识到它不受支持,因此要么使用更合适的 class 特定替代方案,要么添加实现。
但是,我一直认为已弃用的注释仅属于曾经受支持的内容,并计划将其删除。而在我的案例中,内容从未得到支持,也没有计划被删除。
已弃用的注释在这里是否合适?有没有更合适的选择?还是将这些继承的方法保留下来而没有适当的实现,即使被认为已过时,也被认为是一种不良做法。
感谢您抽出宝贵的时间以及您可能提供的任何反馈。
谢谢,
-贾斯蒂斯
@deprecated 注释的存在是为了通知用户将来会删除某些方法。不立即删除它们的唯一原因是它会破坏现有代码。
就您而言,您似乎在滥用继承权。从 class 扩展而不实现预期的行为是一种代码味道,称为 Refused Bequest
正如 NickL 指出的那样,您的继承方法听起来很奇怪。但是,我想澄清一个关于弃用的误解。
许多开发者认为弃用API意味着宣布它将被删除,但这不是唯一的用例(如Java 7 and Java 9的相关文章中所述):
The API is dangerous (for example, the Thread.stop
method).
There is a simple rename (for example, AWT Component.show/hide
replaced by setVisible
).
A newer, better API can be used instead.
The deprecated API is going to be removed.
所以在你的方法上加上 @Deprecated
注释实际上是完全正确的。请务必添加 Javadoc @deprecated
标签以解释您的推理,并说明该方法当前不打算删除。
如果您改变了对其中一种方法的看法,或者想要弃用其他方法并打算删除它们,请在@deprecated
Java文档标签。如果您使用 Java 9 及更高版本,您还应该将新的 forRemoval
标志设置为 true
(默认为 false
):
@Deprecated(forRemoval=true)
该功能称为 Enhanced Deprecation。
可以在 to 中找到更多详细信息。
为了编写干净漂亮的代码,我一直在寻找一个问题的答案,这个问题在记录我的最新项目时突然出现。
通常会有一个抽象 class 或接口,其中包含需要实现的方法;偶尔,继承这些方法的 class 有其他特定和独特的方法,使那些继承的方法过时,因此永远不会被引用。 为避免在未使用功能的地方添加功能,我将这些过时的继承方法留空,并评论它们为何如此。 尽管如此,我还是觉得我应该做的更多,但除了给它弃用的注释之外,我无法给出答案。 这将确保任何尝试使用该方法的人都会意识到它不受支持,因此要么使用更合适的 class 特定替代方案,要么添加实现。 但是,我一直认为已弃用的注释仅属于曾经受支持的内容,并计划将其删除。而在我的案例中,内容从未得到支持,也没有计划被删除。
已弃用的注释在这里是否合适?有没有更合适的选择?还是将这些继承的方法保留下来而没有适当的实现,即使被认为已过时,也被认为是一种不良做法。
感谢您抽出宝贵的时间以及您可能提供的任何反馈。 谢谢, -贾斯蒂斯
@deprecated 注释的存在是为了通知用户将来会删除某些方法。不立即删除它们的唯一原因是它会破坏现有代码。
就您而言,您似乎在滥用继承权。从 class 扩展而不实现预期的行为是一种代码味道,称为 Refused Bequest
正如 NickL 指出的那样,您的继承方法听起来很奇怪。但是,我想澄清一个关于弃用的误解。
许多开发者认为弃用API意味着宣布它将被删除,但这不是唯一的用例(如Java 7 and Java 9的相关文章中所述):
The API is dangerous (for example, the
Thread.stop
method).There is a simple rename (for example, AWT
Component.show/hide
replaced bysetVisible
).A newer, better API can be used instead.
The deprecated API is going to be removed.
所以在你的方法上加上 @Deprecated
注释实际上是完全正确的。请务必添加 Javadoc @deprecated
标签以解释您的推理,并说明该方法当前不打算删除。
如果您改变了对其中一种方法的看法,或者想要弃用其他方法并打算删除它们,请在@deprecated
Java文档标签。如果您使用 Java 9 及更高版本,您还应该将新的 forRemoval
标志设置为 true
(默认为 false
):
@Deprecated(forRemoval=true)
该功能称为 Enhanced Deprecation。
可以在