2009-12-09 9 views
9

Qual è la migliore pratica nella documentazione di classi e interfacce. Di 'se hai una classe concreta chiamata Foo, che deriva da un'interfaccia chiamata IFoo. Dove metti i tuoi commenti per i tuoi metodi? Duplicate i vostri commenti sull'interfaccia e sulla classe concreta?Commentare il codice: metti i tuoi commenti di codice su Interfacce o su classi Concrete o entrambi?

Ecco un esempio in cui vengono duplicati commenti:

public class Foo : IFoo 
{ 
    /// <summary> 
    /// This function does something 
    /// </summary>   
    public void DoSomething() 
    { 
    } 
} 

public interface IFoo 
{ 
    /// <summary> 
    /// This function does something 
    /// </summary>   
    void DoSomething(); 
} 

risposta

18

avrei messo i commenti su entrambi.

Sulle interfacce vorrei commentare l'intento dietro i membri dell'interfaccia e l'utilizzo.

Per le implementazioni vorrei commentare le ragioni della specifica implementazione.

+3

+1 ... e se si utilizza GhostDoc, è facile ottenere i commenti dell'interfaccia copiati dai membri dell'interfaccia alle loro implementazioni concrete. – Groo

4

io in genere li metto su entrambi, però, non dicono la stessa cosa. Il commento dell'interfaccia dovrebbe descrivere lo scopo astratto di questo metodo/interfaccia. Mentre il commento concreto parlerà delle specifiche di implementazione del metodo/classe nel contesto dello scopo dell'interfaccia.

3

Li ho messi in entrambi, ma è un problema tenerli sincronizzati, quando in dubbio li metto solo sull'interfaccia.

Lo faccio perché mi piace la descrizione comando quando si utilizza il codice, che dovrebbe essere quasi sempre utilizza l'interfaccia ...

1

Io in realtà non li uso affatto. Invece mi assicuro di strutturare il codice e nominare tutti i metodi e le variabili in modo che sia ovvio cosa fanno senza commenti. Il problema con i commenti è che non vengono compilati e non vengono eseguiti e non vengono testati dai test delle unità, quindi è praticamente impossibile mantenerli sincronizzati con il codice.

+0

Questi commenti sono più per l'uso con Intellisence quindi per la comprensione del codice. Sono d'accordo che è più difficile da mantenere, ma possono essere molto utili per esplorare le API. –

+0

Sì, credo che siano utili quando si sta sviluppando un'API per qualcuno di un altro team. – Grzenio

1

Solo per interfacce. Perché in questo caso non ho bisogno di sincronizzarli. Il mio IDE mi aiuta a vedere i commenti dell'interfaccia in classi concrete. E il generatore di documenti API fa lo stesso.

2

entrambi, ma mi piacerebbe che c'è stato costruito nel funzionalità per tenerli in sincronia

3

Il tuo codice di esempio non usa implementazione dell'interfaccia esplicita. Il client del tuo codice avrà bisogno di entrambi poiché può invocare il metodo tramite un oggetto di classe o un riferimento all'interfaccia. Con l'implementazione dell'interfaccia esplicita è possibile omettere il commento del metodo di classe poiché il client non può mai vederlo. Ciò presuppone che si stia utilizzando la documentazione XML per generare informazioni IntelliSense.

2

Un tag <referTo>System. .... </referTo> per collegare i commenti che sarebbe l'ideale

1

Idealmente, solo l'interfaccia deve essere documentata, in quanto definisce il contratto che ogni concreta attuazione deve soddisfare.