2016-11-20 3 views
2

Предположим, у меня есть интерфейс следующим образом.Если методы реализации имеют комментарий JavaDoc, если интерфейс, который они реализуют, имеет комментарий JavaDoc

public interface MyInterface{ 

/** 
* This method prints hello 
*/ 
    void sayHello(); 

    /** 
    * This method prints goodbye 
    */ 
    void sayGoodBye(); 
} 

Конкретный класс реализует эти методы. Теперь методы в конкретном классе также должны определять javadocs поверх определения его метода? Я вижу, что некоторые люди просто копируют одно и то же определение javadoc в реализованные методы конкретного класса. Я не считаю это хорошей практикой, потому что, если мы хотим изменить определение документа, нам нужно изменить его в нескольких местах.

Какова стандартная практика для этого?

+0

В интерфейсе, где вы объявляете методы, может быть обзор того, что делает этот метод. При реализации, если требуется, вы можете поэтапно объяснить метод, чтобы узнать, что именно делает этот метод. В идеале, если вы используете правильный стандарт кодирования, его не требуется, чтобы дать такое подробное объяснение. – Raghuveer

+0

Вы хотите сказать, что метод интерфейса javadocs должен быть кратким? – DesirePRG

+0

Да, но и достаточно описательно, чтобы понять читателя, что API должен делать. – Raghuveer

ответ

3

Вы можете использовать {@inheritDoc} для наследования документации интерфейса и просто добавить дополнительные комментарии, если вы считаете, что они важны и имеют дополнительную дополнительную информацию для конкретной реализации.

Используйте только @inheritDoc, если вы намерены добавить в оригинальную документацию суперкласса/интерфейса. Если вам нужна только копия, Javadoc позаботится об этом. Он увидит, что документация суперкласса применяется к переопределенному подклассу подкласса, потому что подкласс не содержит дополнительной документации.

{@inheritDoc} - Находит (копирует) документацию из «ближайшего» наследуемого класса или реализуемого интерфейса в текущий комментарий к этому тегу. Это позволяет писать более общие комментарии выше дерева наследования и писать вокруг скопированного текста.

http://docs.oracle.com/javase/6/docs/technotes/tools/solaris/javadoc.html#@inheritDoc

+1

Вам не нужно это делать. И мало что нужно сделать, если * вы хотите добавить материал, специфичный для реализации ... и иметь как унаследованный, так и добавленный материал в том же текстовом блоке. –

2

Теперь делают методы в конкретном классе необходимо также определить Javadocs на вершине своего определения метода?

№ Это уже указано. Конкретные методы должны делать именно то, что говорит интерфейс Javadoc, и ничего больше.

Я вижу, что некоторые люди просто копируют одно и то же определение javadoc для внедренных методов конкретного класса. Я не считаю это хорошей практикой, потому что, если мы хотим изменить определение документа, нам нужно изменить его в нескольких местах.

Вы верны. Они не должны этого делать.

Вы также не должны использовать @inheritDoc, за исключением очень редкого случая, когда конкретный метод нуждается в более подробном описании, чем в интерфейсе Javadoc.Большую часть времени вы не должны предоставлять какие-либо Javadoc вообще, даже не:

/** 
* 
*/ 
0

Вы должны предоставить комментарий для конкретной реализации, если

  • комментарий для интерфейса настолько общим, что делает неадекватно указать конкретную реализацию
  • конкретная реализация ослабляет любые предпосылки интерфейса
  • конкретная реализация имеет более строгие (более узкие) должности co чем интерфейс.
Смежные вопросы