私有/受保护方法的JavaDoc?

sma*_*use 47 java javadoc private protected

我应该为私有受保护的方法编写JavaDoc 吗?私有变量怎么样?

我在Java书上看到了类示例,私有变量是JavaDoc.所以我无法理解JavaDoc 私有(或受保护)方法是否是一个好习惯.

Ale*_*ien 54

是的,您应该为私有方法编写JavaDoc,即使它仅适用于您自己.在3年内,当您必须更改代码时,您会很高兴您记录了它.

如果您离开公司,或者必须在另一个项目上工作,您的同事将很乐意提供记录在案的代码.未记录的代码具有更低的价值.

看看真正的专业人士是如何做到的.以下是Sun MicrosystemsArrayList类源代码的摘录:

 /**
  * The array buffer into which the elements of the ArrayList are stored.
  * The capacity of the ArrayList is the length of this array buffer.
  */
  private transient Object[] elementData;
Run Code Online (Sandbox Code Playgroud)

  • 我们不谈论一个众所周知的Hello world coede.在专业开发中,unocumnetd代码会导致下一个处理该代码的人员的成本增加.即使它是你自己的代码,在创建之后的几年,你会花更多的时间思考为什么和什么,而不是创建时记录的成本. (11认同)
  • 问题显然是关于JAVADOC.作为ashes999的答案,Javadoc主要面向使用代码的人.你在谈论评论你的代码和你所说的是有效的,我在同一条道路上,但这不算javadoc.Javadoc并非旨在为您和您的同事保留您的评论,并将其公之于众. (7认同)
  • 公共HelloWorld(){system.out.println("Hello World")}的值是否小于//打印Hello World HelloWorld(){system.out.println("Hello World")}? (2认同)
  • @testuser对你的评论:"javadoc不是为了保留你的评论..."Javadoc有一个功能,它允许你只为公共方法/字段创建javadoc html.因此,如果有必要压制信息,那么为自己编写私有内容并仅为消费者发布公共内容. (2认同)
  • @testuser,不,选项“仅限公共”是默认选项。此外,您似乎不了解 javadoc,因此请自行思考继续此讨论是否有意义。 (2认同)

ash*_*999 39

您需要问自己的第一个问题是"为什么要编写JavaDocs?" 他们对谁有用?谁让你写这些?

最有可能的是,有人(雇主/教授)要求您记录一些方法.这通常是一件好事,但需要付出代价:额外的维护.

如果您有一个可公开访问的文档版本(例如,如果您正在生成它们并在线发布给最终用户),那么记录最终用户需要知道的任何内容都是有意义的.这包括所有公共类和方法.

对你自己和其他开发者来说呢?

我的观点是你不应该在内部和私有方法和类上使用javadoc.主要原因是javadocs主要使那些使用而不是维护代码的人受益.

另一方面,您需要在自己的代码上保留注释和注释,这通常是内部代码.在这种情况下,我会建议正常的评论(例如//); 它的维护较少,而且往往同样清晰,打字少得多.

另一方面,如果方法变为公共方法,将这些注释转换为真正的javadoc可能很有用.Javadocs的好处是强迫您考虑(并记录)每个参数,异常和返回值.

需要权衡利弊.

  • AFAIK eclipse,visual studio,netbeans和intellij可以非常方便地显示javadoc,所以在我看来,它对每个使用你的代码的人都有好处. (4认同)
  • Eclipse也是如此,这是一个非常有益的功能. (3认同)
  • 仅供参考,对于 .NET 开发人员,当您将鼠标悬停在方法名称上时,Visual Studio 会显示这些注释 - 即使对于私有方法 - 因此对于 .NET 代码,这样做是有意义的。 (2认同)
  • 我不明白为什么“ //”比“ / **”少维护。而且实际上使用“ //”的类型更多,因为eclipse会自动为您生成javadoc tremplate。 (2认同)
  • @kidburla我会为`protected`方法编写javadoc注释,因为当它们被覆盖时,它们将被继承.此外,如果您正在开发其他开发人员将构建的平台应用程序,则可以节省重写Java文档注释.如果被覆盖的方法行为发生变化并将被公开使用,那么他们将需要编写javadoc注释的修订版本. (2认同)

Jos*_*h M 6

不,你不应该为私有方法编写javadoc.最终用户无权访问私有字段或方法,因此没有必要为他们提供javadoc.私有字段和方法仅适用于开发人员.如果你真的需要,可以随意为不明显的逻辑写评论.您应该为protected方法编写javadoc,因为这些方法有时会被覆盖,并且向用户提供有关该方法的功能或应该执行的操作的一些信息是有帮助的.

  • 编写javadoc并不意味着将它呈现给最终用户.私有方法的javadoc给出了一个结构如何(内部)注释.它要求评论所有参数和返回值.这是一个快速模板,可以加快您的记录时间.要保护逆向工程,您必须进行模糊处理并保留公共接口.进一步的eclipse显示了一个漂亮的鼠标弹出文档,它的(私有)方法是javadoced (3认同)
  • 噢,由于缺乏解释,投票人太可爱了。 (2认同)
  • 如果你为私有方法或字段提供注释行,你最好写一个javadoc,这没有缺点,只有advatages. (2认同)

Mar*_*o13 5

您经常听到一般性建议,在最好的情况下,评论根本就没有必要.但是对于JavaDoc,它们不仅对开发人员而且对库的用户都起着重要作用.

另外,编写JavaDoc注释对于您(尤其是初学者)可能比对其他任何人更有用:当您发现很难描述变量是什么或者单个方法做什么时/** One-line-JavaDoc comment */,您将自动重新思考你在那里做了什么.

生成JavaDoc时,您可以选择是仅为API publicprotected部分API 生成它们,还是为默认或private元素生成它们.

但是,在任何情况下都应该记录文档protected方法:扩展类的人只能调用此方法,还是允许他覆盖此方法?如果是这样,他应该知道任何先决条件和后置条件吗?他应该打电话super.theMethod()给被覆盖的版本吗?(顺便说一句:如果他不允许覆盖该方法,那么它应该是final,但无论如何都要记录)

顺便说一句:我个人评论一切,但知道大多数人认为这不是必要的,甚至是不好的风格,特别是对于"琐碎的"事物

/**
 * The number of elements in this set
 */
private final int numberOfElements;
Run Code Online (Sandbox Code Playgroud)

我认为这不会造成伤害,但在许多情况下会有所帮助.也许,关于private零件,这只是一个品味问题.


Pet*_*ton 3

您不必编写任何 javadoc,但它非常有帮助。更多的 javadoc 从来都不是坏事。

根据您的问题,如果您使用 javadoc 文档编译器,javadoc 将针对受保护的方法进行编译,但不会针对私有方法进行编译。不过,没有理由不能将它们用作代码注释。