Comment the interface, implementation or both?
As a general rule, I use the same DRY (Don't Repeat Yourself) principle as with code:
- on interface, document the interface
- on implementation, document the implementation specifics
Java specific: when documenting the implementation, use {@inheritDoc} tag to "include" javadocs from the interface.
For more information:
- Official javadoc documentation
- Some unofficial advice.
C# usage:
Interface can look like this:
/// <summary>
/// Helper class to access various properties for the current site.
/// </summary>
public interface ISiteHelper
{
/// <summary>
/// Gets the site id of the current site
/// </summary>
/// <returns>The site id.</returns>
int GetSiteID();
}
}
Implementation can look like this:
/// <inheritdoc />
public class SiteHelper: ISiteHelper
{
/// <inheritdoc />
public int GetSiteID()
{
return CommonRepository.GetSiteID();
}
}