133 votes

Commentez l'interface, l'implémentation ou les deux ?

J'imagine que nous commentons tous (quand nous pouvons nous en donner la peine !) nos interfaces, par exemple.

/// <summary>
/// Foo Interface
/// </summary>
public interface Foo
{
    /// <summary>
    /// Will 'bar'
    /// </summary>
    /// <param name="wibble">Wibble factor</param>
    void Bar(string wibble);
}

Commentez-vous également l'implémentation (qui peut également être fournie aux clients, par exemple dans le cadre d'une bibliothèque) ? Si c'est le cas, comment parvenez-vous à maintenir la synchronisation entre les deux ? Ou bien ajoutez-vous simplement un commentaire du type "Voir l'interface pour la documentation" ?

Merci

0 votes

Un double s'est faufilé par ici : stackoverflow.com/questions/1875440/

106voto

Neeme Praks Points 4150

En règle générale, j'applique le même principe DRY (Don't Repeat Yourself) que pour le code :

  • sur l'interface, documenter l'interface
  • lors de la mise en œuvre, documenter les spécificités de la mise en œuvre

Spécifique à Java pour la documentation de l'implémentation, utilisez la balise {@inheritDoc} pour "inclure" les javadocs de l'interface.

Pour plus d'informations :

0 votes

Merci pour l'info, je ne connaissais pas le tag @inheritDoc.

0 votes

Wow... Je ne savais pas non plus que {@inheritDoc} existait ! Je vais l'utiliser régulièrement à partir d'aujourd'hui.

40 votes

Pour C#, vous pouvez utiliser <inheritdoc /> qui est soutenu par SandCastle. ( Plus d'infos... )

7voto

NikolaiDante Points 2990

Si vous utilisez le GhostDoc il met à jour l'implémentation avec le commentaire de l'interface lorsque vous cliquez avec le bouton droit de la souris et sélectionnez "Documenter ceci" sur la méthode.

6voto

Len Holgate Points 12579

L'interface uniquement. Commenter les deux est une duplication et il est probable que les deux ensembles de commentaires seront éventuellement désynchronisés si le code change. Commentez l'implémentation avec "implements MyInterface"... Des choses comme Doxygen vont générer des docs qui incluent les docs dérivés dans les docs de l'implémentation de toute façon (si vous les configurez correctement).

5voto

grover Points 1550

Pour le C#, cela dépend de l'IMO : Si vous utilisez des implémentations d'interface explicites, alors je ne documenterais pas l'implémentation.

Cependant, si vous implémentez directement l'interface et exposez les membres de l'interface avec votre objet, ces méthodes doivent également être documentées.

Comme Nath l'a dit, vous pouvez utiliser GhostDoc pour insérer automatiquement la documentation d'une interface dans l'implémentation. J'ai associé la commande Document This au raccourci Ctrl+Shift+D et c'est l'une des touches que je presse presque automatiquement. Je crois que ReSharper a également la possibilité d'insérer la documentation de l'interface, lorsqu'il implémente les méthodes pour vous.

4voto

Jiminy Points 425

Nous commentons simplement l'interface, les commentaires sont si faciles à désynchroniser avec la classe/interface dérivée ou de base qu'il est agréable de les avoir à un seul endroit.

Bien qu'il semble que @Nath suggère peut-être un outil de documentation automatisé qui aide à garder les choses ensemble (cela semble cool si vous l'utilisez). Ici, à WhereIWorkAndYouDontCare, les commentaires sont pour le développement, donc un seul endroit dans le code est préféré.

0 votes

Non automatisé, nécessite une action de l'utilisateur, malheureusement.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X