Quale sarebbe un buon modo per richiedere commenti?

7

Nel progetto / team che sto lavorando la frequenza dei commenti è un po 'bassa. Una ragione potrebbe essere che non è chiaro agli sviluppatori di vecchia data quali righe nel codice veramente hanno bisogno di un commento (ogni parte del progetto ha degli sviluppatori abbastanza fissi).

Per aumentare questo, abbiamo intenzione di consentire ai membri del team di rivedere il codice e di controllare "richieste di commenti", che l'elemento principale di quella parte dovrebbe sostituire con commenti utili.

  • Pensi che questo potrebbe funzionare?
  • Se "sì": quali tag dovremmo usare per contrassegnare? (ad es. // TODO per favore commenta)
  • Riesci a pensare a alternative per questo processo?

Modifica: apprezzo le tue risposte sulle migliori pratiche nel commentare e scrivere il codice e sono completamente d'accordo. Ma la mia domanda si rivolge ai casi in cui il refactoring non è un'opzione (non volendo cambiare il codice di lavoro, non volendo "accusare" l'elemento principale di produzione del codice che ha bisogno di refactoring, ...) - quindi solo commenti più o migliori sono un'opzione ( almeno per questa domanda).

    
posta WarpEnterprises 12.09.2012 - 08:58
fonte

4 risposte

2

Innanzitutto, il codice dovrebbe essere auto-documentante. Ogni riga di codice dovrebbe essere facile da decifrare e la somma totale di quelle righe di codice dovrebbe essere facilmente rintracciabile. Questo in genere significa che i metodi e le variabili dovrebbero avere nomi descrittivi ma concisi, che le operazioni dovrebbero essere chiaramente definite, schemi di progettazione che incoraggiano metodi più piccoli, uso singolo e "hack", compreso il codice che si basa su dettagli arcani dell'implementazione dietro il specifiche linguistiche, dovrebbero essere evitate. Considerate queste cose, qualsiasi coder con esperienza ragionevole dovrebbe essere in grado di decifrare il codice senza bisogno di commenti.

Detto questo, non sarai sempre in grado di farlo. Tempo, risorse, abilità tecniche, ecc. A un certo punto ti costringono a fare qualcosa in modo poco chiaro o sfacciato. Per mitigare l'oscurità del tuo codice, i commenti che indicano ciò che stai facendo e perché a volte può essere necessario. Può essere difficile per un programmatore andare fuori piano, a testa in giù a un algoritmo per rendersi conto di quando potrebbe essere necessario, quindi una fase di revisione del codice è una buona idea. Chiedi a un altro sviluppatore di leggere il codice e, se indicano qualcosa e chiedono "perché", questo è un buon candidato per alcuni commenti.

Un'altra cosa che spesso trovo utile è lo sviluppo basato sui commenti. Quando si crea un nuovo metodo, scrivere linee di commenti che descrivono in dettaglio come il metodo dovrebbe progredire attraverso l'attività progettata. Fondamentalmente stai prendendo appunti su cosa dovrebbe fare il metodo, anche se a questo punto della tua codifica non scriverete effettivamente alcun codice in quel metodo. Questo può essere inestimabile nella programmazione collaborativa, in cui un algoritmo per qualcosa di critico o estremamente coinvolto è stato progettato su una lavagna dal team e quindi dato a uno o due codificatori da implementare. Quindi, mentre si codifica, i commenti descrivono l'attività eseguita in ogni fase. Possono essere rimossi se l'operazione è chiaramente ovvia, oppure possono rimanere se la logica è più complessa dell'idea concettuale di quel codice. Tuttavia, quando usi questa tecnica, è importante capire che ciò che pensavi di fare non è sempre quello che hai finito; devi identificare quei casi e aggiornare o riscrivere i commenti.

    
risposta data 12.09.2012 - 19:09
fonte
15

La mancanza di commenti IMHO non è necessariamente una cosa negativa. Il più delle volte il codice può essere scritto per essere auto-esplicativo, quindi non ha bisogno di commenti (a parte la documentazione API). Le poche eccezioni sono quando il codice è intenzionalmente difficile, ad es. implementa un algoritmo noto, contiene ottimizzazioni delle prestazioni ecc.

Nel complesso, la quantità (e persino la qualità e la correttezza) dei commenti è un cattivo indicatore della qualità generale del codice. Dovresti piuttosto concentrarti sull'intera immagine: creare (e mantenere) il codice pulito, leggibile e gestibile - di cui i commenti sono solo una piccola parte.

Quindi, se vedi un pezzo di codice che ritieni abbia bisogno di commenti, considera prima il refactoring . Molto spesso il codice può essere rifattorizzato per essere facile da leggere e questo elimina la necessità di commenti.

es. se vedi un lungo metodo che esegue una lunga operazione che ha chiaramente diverse fasi / fasi distinte, potresti ritenere necessario aggiungere commenti prima di ogni fase, come

void SomeLongCalculation(...) {
  // Calculate the foo coefficient
  ...

  // Determine the bar factor
  ...

  // Sum up the blorg values
  ...

  // Calculate the yearly average
  ...

}

mentre potresti estrarre ogni passaggio in un metodo separato con un nome descrittivo:

void SomeLongCalculation(...) {
  CalculateFooCoefficient(...);
  DetermineBarFactor(...);
  SumBlorgValues(...);
  CalculateYearlyAverage(...);
}

Questo rende esplicito ogni passaggio, mantiene tutto il codice nel tuo metodo sullo stesso livello di astrazione, rendendolo così pulito e facile da leggere. Inoltre, ti consente di testare separatamente ogni sottofase.

    
risposta data 12.09.2012 - 09:16
fonte
12

Can you think of alternatives for this process?

Sì, posso. Quando esaminerai un pezzo di codice, fallo in coppia - un revisore e lo sviluppatore che lo ha scritto, seduto direttamente davanti allo stesso schermo. Invece di aggiungere "richiesta di commenti", lascia che lo sviluppatore principale spieghi cosa fa il codice (e perché !), E il revisore aggiunge direttamente un commento con le parole che comprende.

E pensa di permettere qualche refactoring durante quel processo - almeno, quando hai a disposizione strumenti di refactoring automatico, che ti danno solo un piccolo rischio di distruggere qualcosa. Sono qui con Péter Török - i piccoli metodi con nomi che si auto descrivono e il piccolo ambito richiedono meno commenti e sono molto meglio dei grandi metodi con molti commenti bloccati.

    
risposta data 12.09.2012 - 10:04
fonte
0

Penso che sia una buona idea farlo, se la squadra è abbastanza grande e c'è abbastanza tempo. I commenti sono necessari nel codice, la domanda è come è fatta. Probabilmente il tuo team ha o sta pianificando di implementare un modo completo di commentare. In ogni caso, il giusto tipo di commenti accelera il processo di sviluppo, combinato con la risposta di Péter Török.

Nel mio progetto lo scorso semestre, il supervisore ha utilizzato gerrit per la revisione del codice. Questo è lo stesso sistema che viene utilizzato nell'intero dipartimento e funziona abbastanza bene. Ha semplicemente rivisto il nostro codice e indicato tutte le parti che avevano bisogno di più commenti o miglioramenti. Questa può essere una risposta alle tue ultime due domande, oppure potresti trovare un sistema simile che faccia questo.

    
risposta data 12.09.2012 - 11:13
fonte

Leggi altre domande sui tag