Então nós temos uma interface assim
/// <summary>
/// Interface for classes capable of creating foos
/// </summary>
public interface ICreatesFoo
{
/// <summary>
/// Creates foos
/// </summary>
void Create(Foo foo);
/// <summary>
/// Does Bar stuff
/// </summary>
void Bar();
}
Recentemente, reproduzimos uma história de documentação que envolvia a geração e a garantia de que havia muita documentação XML como acima. Isso causou muita duplicação de documentação. Exemplo de implementação:
/// <summary>
/// A Foo Creator which is fast
/// </summary>
public class FastFooCreator : ICreatesFoo
{
/// <summary>
/// Creates foos
/// </summary>
public void Create(Foo foo)
{
//insert code here
}
/// <summary>
/// Does Bar stuff
/// </summary>
public void Bar()
{
//code here
}
}
Como você pode ver, a documentação do método é uma cópia direta da interface.
A grande questão é: isso é ruim? Meu intestino me diz que sim por causa da duplicação, mas talvez não?
Além disso, temos outra duplicação de documentação semelhante com override
funções e virtual
funções.
Isso é ruim e deve ser evitado ou não? Vale a pena mesmo?
Respostas:
Em geral, eu só adicionaria nova documentação aos métodos da implementação se houver algo específico sobre essa implementação que precise ser mencionado.
No javadoc, você pode vincular a outros métodos, o que permitiria criar apenas um link na implementação para a documentação do método na interface. Acho que é assim que deve ser feito no .Net (com base na leitura da documentação on-line, não na minha própria experiência):
A documentação para o
<see/>
elemento: http://msdn.microsoft.com/en-us/library/acd0tfbe.aspxfonte
Collection<T>
e queira substituir seusCount
documentos XML de propriedade.