为什么首先出现在这里?
您已将不稳定的代码签入主线了吗?为什么?
不稳定的代码不应检入trunk / main / master或其他主干名称中。这被认为是高风险开发,应该将其隔离在您工作的自己的分支中,而不要检查到主要分支中。
我强烈建议您(和您的团队负责人)阅读Advanced SCM Branching Strategies。特别要注意开发角色及其对高风险开发的说明:
通常,考虑为每个高风险项目使用单独的分支。高风险项目的特点是规模大,人员多,主题不熟悉,技术主题高,时间表紧迫,交付日期不确定,要求不完整或不稳定以及项目团队的地理位置分散。同样,考虑为每个发行版中的低风险开发指定一个分支。包括[WING98]在内的一些来源建议为此使用主线。在采取此行动之前,请考虑以上针对主线讨论的因素。即使您有多个通过主线进行协调的产品系列成员,低风险开发也可能会与主线采取不同的策略。
让人们将不稳定的(或未使用的)代码检查到主线中,意味着您将在尝试维护此代码时混淆将来的开发工作。从现在到时间结束为止,rep的每个分支和克隆都将包含该副本,直到有人说“其死的codE”并将其删除。
有些人说“好吧,如果它在分支中会被遗忘”,虽然这可能是正确的,但在主线中遗忘了死(和不稳定)的代码会变得更糟,因为它会使所有未来的开发困惑,直到被删除为止;并且那就更被遗忘了。可以很好地看到“ / fooProject / branches / WeisBigIdea”(或等效名称)的分支,并且将来更容易使用-尤其是在这种情况下。
@Deprecated
首先是@Deprecated
注释。这超出了javadoc的范围,并吐出了编译器警告。javac
提供一个-deprecation
标志,描述如下:
显示对不赞成使用的成员或类的每次使用或覆盖的说明。不使用-deprecation
,将javac
显示使用或覆盖不赞成使用的成员或类的源文件的摘要。-deprecation是的简写-Xlint:deprecation
。
如上所述,这超出了标准的编译器警告。
在许多IDE中,不推荐使用的方法和值都带有删除线:
foo.bar();
并会产生如下输出:
$ javac -Xlint:all Foo.java Bar.java
Bar.java:2: warning: [deprecation] Foo in unnamed package has been deprecated
interface Bar extends Foo { }
^
根据您的构建结构,可能会发出警告,警告您中断构建。如果使用了您的一个类,这只会破坏构建(如果只是简单地编译进来,则不会)。
@CustomAnnotation
有很多方法可以做到这一点。例如,轻量级javac @Warning批注提供了一个批注处理器,当使用带有该批注的东西时,它会在编译时发出警告(有关自定义批注处理器的netbeans教程,因此您可以了解场景)。
Oracle甚至@Unfinished
在充分利用Java的元数据,第2部分:自定义注释中描述了使用自定义注释作为注释的示例。
使用AnnotationProcessor,您可以在编译时运行任意代码。真正由您决定要做什么。警告,在使用某些东西时破坏构建。网上有很多教程,介绍如何编写此类代码。是要在编译时生成错误(这很烦人并导致其被删除)还是要使用它(编写起来要复杂得多),是要生成错误。
请注意,所有这些都意味着将构建更改为实际使用注释处理器。