2016-11-20 63 views
2

假設我有一個接口,如下所示。如果實現方法具有JavaDoc評論,如果它們實現的接口具有JavaDoc評論

public interface MyInterface{ 

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

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

一個具體類實現了這些方法。現在,具體類中的方法是否還需要在其方法定義之上定義javadoc?我看到有些人只是將相同的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

現在做的具體類的方法也需要定義它的方法定義的頂部的Javadoc?

不,已經指定。具體的方法應該做到Javadoc所說的界面,而不是別的。

我看到一些人只是將相同的javadoc定義複製到具體類的實現方法。我不認爲這是一個好的做法,因爲如果我們要改變文檔定義,我們需要在多個地方進行更改。

你是對的。他們不應該這樣做。

您不應該使用@inheritDoc,除非極少數情況下,具體方法需要更多描述而不是已經存在於接口Javadoc中。大多數時候,你不應該提供任何的Javadoc可言,甚至沒有:

/** 
* 
*/ 
0

的具體實施應提供評論,如果

  • 該接口的評論是很通用它沒有充分指定具體實施
  • 具體實施放寬了接口的任何先決條件
  • 具體實施更嚴格(更窄)後公司nditions比界面。