代码之家  ›  专栏  ›  技术社区  ›  Joshua Fox

禁用javadocs的注释

  •  5
  • Joshua Fox  · 技术社区  · 15 年前

    是否有注释声明某个方法即使是公共的,也不会包含在JavaDocs中?

    类似:

    @nojavadocs
    public void foo(){
    //...
    }
    

    P.S.我理解这里关于API的观点,但是这些方法只是“不受支持”。它们工作(并且必须是公共的,以便从其他包访问),但是我们不想费心记录它们,并回答当它们的功能与受支持的使用场景不相关时如何使用它们的问题。好的设计可能意味着将它们移动到另一个类,但它们在逻辑上引用类中的数据。

    4 回复  |  直到 15 年前
        1
  •  4
  •   Eli Acherkan    15 年前

    如果您使用的是Sun的JavaDocs工具,则不会。

    他们有 a feature request 但自1997年以来,它一直处于低优先级。

    您可以编写一个自定义的doclet来克服这个问题,或者使用第三方工具(docflex等)。

        2
  •  6
  •   Steve B.    15 年前

    我能想到的唯一原因就是你想这样做,如果只是在文档方面的话,在某种意义上“隐藏”这个方法。如果您这样做了,那么您将设计一个文档被“破坏”,从这个意义上说,当文档过期时,它就会被破坏,并且不再准确地反映类所做的事情。因为该方法仍然是公共API的一部分,所以无论如何,您也不会真正隐藏它。

    如果您希望某个方法在类或少数用户之外不被使用,请将其设为私有方法或包。如果这不方便,而且必须是公共的,那么我将非常清楚地记录它的使用限制,可能是使用命名约定(例如,python这样做了,实体名被下划线包围,您可以看到,但更多地是类实现的一部分,而不是公共API)。

        3
  •  4
  •   Mark Elliot    15 年前

    是的……但不是很好(拥有真正“公开”的公开方法不是一个很好的设计实践)。

    你可以按照 this thread 并使用标记方法 @deprecated 然后在运行javadoc use选项时 -nodeprecated .

    编辑:正如其他人所指出的,这是 理想的行动方针。这将解决您的问题,但您确实需要重新考虑为什么要隐藏该方法——考虑到代码的编译版本,某人仍然能够看到您的函数;在文档中隐藏它实际上并不能隐藏该方法。我真的想强调的是 private , public protected 具有你应该考虑和有效利用的意义。 没有“隐藏”这样的东西 公众的 方法 .

        4
  •  2
  •   user85421    15 年前
    /**
     *  Don't use this method <br>
     *  <i>or all your data will be lost.</i>
     */
    public void foo(){
        //...
    }
    

    好吧,使用一个更好的解释为什么用户不应该使用这个方法…
    记住,使用反编译程序或反射查找任何(公共)方法并不困难。