【问题标题】:Is there a way to warn other developers about function?有没有办法警告其他开发人员注意功能?
【发布时间】:2019-04-10 14:43:08
【问题描述】:

我希望开发人员能够使用该功能,但我希望他们知道它不适合在大多数情况下使用。

有没有办法警告其他开发人员有关功能。类似于 lint 的作用。该方法是否有类似@Warning("Prefer using #fooo() if possible) 的注释? 我想知道如何做 java 或 kotlin。类似于@Deprecated,但在我的上下文中更有意义。

我希望我的 IDE 也知道该警告,而不仅仅是编译器。

【问题讨论】:

  • IDE 集成通常总是基于 linter,编译器通常也会调用它(除非它有自己的)。无论哪种方式,它都基于相同的源集构建,因此您必须找到一个构建在源之上的 IDE,使其能够处理它
  • 如果@Deprecated注解(或javadoc标签)不符合你的需要,试试javadoc中的警告信息,这是一个好的开始!
  • @Laurence 谢谢,我会检查的
  • @Highbrainer 有没有类似警告标签的东西?或者你的意思只是原始文本进入评论

标签: java android kotlin


【解决方案1】:

这是我的看法,可能被认为完全不正确。你可以使用@Deprecated 来达到同样的效果:

@Deprecated("test_only")
fun getNumberFormatterInstanceForTesting(context: Context, localeCode: String): NumberFormat {
        if (!::numberFormat.isInitialized) numberFormat = NumberFormat.getCurrencyInstance(parseLocaleCode(localeCode))
        return numberFormat
}

更多示例:

@VisibleForTesting
@Deprecated("Test ONLY, DO NOT use in production")
constructor(application: Application) : this(null, application)

【讨论】:

    【解决方案2】:

    遗憾的是,我认为这是不可能的,但这取决于您使用的 IDE,没有本机 Java 方法可以让该方法显示警告,您必须更改 IDE 的代码分析器才能获得您想要的

    【讨论】:

      【解决方案3】:

      假设你有一个foo.bar() 改为委托:

      foo.special.bar()
      foo.special().bar()
      

      这样可以标记“特殊”成员,查找用法。 需要重构。

      这有点像特定业务对象的吸气剂:

      foo.getBazBO().bar()
      

      另一种方法是使用您自己的注释,使用 Doxygen 或其他一些注释处理,在 IDE 编程上投入精力。更多的努力,更少的立竿见影的效果。

      【讨论】:

      • 谢谢,我知道这不会很容易解决。我会尝试在 Kotlin 问题跟踪器上创建一个问题,因为我认为它会很有帮助。
      【解决方案4】:

      可以使用 Kotlin 的 @Experimental 注解:

      https://kotlinlang.org/docs/reference/experimental.html#experimental-status-of-experimental-api-markers

      这将使此类功能的使用者需要明确选择加入,并且您可以在标记的传播和不传播之间进行选择。

      请注意,从 Kotlin 1.3 开始,@Experimental 注释本身是实验性的。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-02-23
        • 2012-04-14
        • 2013-12-31
        • 2016-05-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多