I commenti in prima persona sono fonte di distrazione e non professionale?


63

Mi sono appena trovato a scrivere il seguente commento in un codice (arcaico di Visual Basic 6.0) che stavo scrivendo:

If WindowState <> 1 Then
    'The form's not minimized, so we can resize it safely
    '...
End if

Non sono sicuro del motivo per cui inconsciamente uso "noi" nei miei commenti. Ho il sospetto che sia perché immagino che qualcuno passi attraverso il codice, come se stesse effettivamente "eseguendo" tutti i comandi su ciascuna riga, piuttosto che guardarli accadere. Con questa mentalità, avrei potuto usare I can resize it, dal momento che sono quello che lo sta "facendo" attualmente, o you can resize it, come se stessi parlando con chiunque lo "stia facendo" in futuro, ma dal momento che entrambi questi casi molto probabilmente succede, io uso "noi" come se guidassi qualcun altro attraverso il mio codice.

Posso semplicemente riscriverlo come it can be resizeded evitare il problema, ma ha suscitato la mia curiosità: è comune usare la prima persona in questo modo nei commenti o è considerato distratto e / o poco professionale?


1
Commenti per il downvote? Questa è la mia prima domanda su Programmers.SE, e sto ancora cercando di capire esattamente cosa rende una buona domanda P.SE rispetto a una buona domanda SO.
dlras2,

2
Non ti ho votato a fondo, ma immagino che non gli sia piaciuta la domanda sul titolo in quanto le risposte ad essa potrebbero essere facilmente brevi, loquaci e eccessivamente date a un'opinione non sostenuta. La riformulazione che assomigli di più alla tua domanda finale potrebbe essere d'aiuto.
DKnight,

56
Mi piace il "noi". È amichevole e inclusivo in un modo sano e folle.
Jeremy,

25
Penso che inizierò a commentare tutte le correzioni di bug su cui lavoro in terza persona onnisciente, dovrebbe farmi popolare in ufficio ... "Poco sapeva John che la sua aggiunta mal costruita avrebbe sempre saltato questo codice, lasciando gli utenti perplessi dal campo di visualizzazione perennemente vuoto ... "
DKnight

4
È tutto ciò che posso fare per assicurarmi che i miei commenti non abbiano errori di battitura. Ora devo preoccuparmi se usare o meno la voce passiva? Successivamente dovrò assicurarmi di non far pendere alcuna preposizione - immagino che sia qualcosa che i miei colleghi potrebbero non tollerare. E suppongo che non mi sarà mai permesso di usare uno split infinito. Frammenti di frase?
Michael Burr,

Risposte:


103

I commenti dovrebbero essere scritti affinché gli esseri umani possano capire. Quando gli esseri umani comunicano, usiamo tipicamente "io", "noi", "tu", ecc.

Quando qualcuno sta cercando di capire un codice, ci sono due o più attori: la persona che lo legge e l'autore originale del codice. Dire "noi" va bene. A meno che per "professionista", intendi "robotico".


3
+1 mentre scrivi in ​​questo modo ti incoraggia lo scrittore a considerare il potenziale lettore e ciò può davvero aiutarti a vedere concetti che potrebbero aver bisogno di essere meglio esposti.
Justin Ohms,

64
// we approve of this answer:)
Jarrod Dixon

3
+1 e un'amplificazione: al contrario, le costruzioni a voce passiva come "può essere ridimensionata" sono generalmente respinte per iscritto poiché le troviamo difficili da comprendere. Se usi la voce passiva, costringi il tuo lettore a inventare e ricordare un argomento per la frase.
msw,

1
@msw: non dovrebbe essere 'rifiutiamo costruzioni a voce passiva come "può essere ridimensionata" ...' allora?
tdammers,

2
@msw, in russo, ad esempio, i costrutti vocali passivi sono più comuni e sono più facilmente comprensibili a causa di alcune differenze culturali. (E no, non ho scritto quella frase con voce passiva di proposito!)
P. Shved,

22

Suggerirei di non usare "I" perché si assume automaticamente tutte le responsabilità per il codice. Se altre persone lo leggono, sembrerebbe male perché in questo caso dovrebbe essere uno sforzo di squadra. Sono indifferente sull'uso di "noi". Tuttavia, può sembrare che includa altri lettori in modo non genuino.

Il mio voto vale ancora per brevità e concisione. Se il messaggio può essere trasmesso in modo meno dettagliato, perché scegliere qualcos'altro? Quindi, riguardo a questo esempio, scriverei:

'The form is not minimized so it can be resized safely.

4
"Se il messaggio può essere trasmesso in modo meno dettagliato, perché scegliere qualcos'altro?" Come qualcuno che ha dovuto sbattere la testa contro il muro cercando di implementare le librerie scarsamente documentate di qualcuno - le librerie open source sono famose per questo - dico che preferirei avere troppi commenti piuttosto che troppo pochi. Penso di essere d'accordo con te, anche se intendi usare buone frasi con punteggiatura corretta che abbia senso.
Jonathan Henson,

3
+1 per non assumersi tutte le responsabilità in una squadra. E mentre sono d'accordo nel cercare di evitare commenti dettagliati, a volte il tempo passivo può essere ancora più difficile da leggere (come ha sottolineato Jkj) e non meno dettagliato, e preferisco evitare l'offuscamento. =]
dlras2

2
@Jonathan Henson: molti commenti sono buoni, ma solo se contengono molte informazioni utili. Se la stessa quantità di informazioni può essere espressa in due modi equivalenti, quella più corta è migliore.
tdammers,

Il mio consiglio è di evitare di usare la voce passiva. È più difficile da capire, soprattutto per chi non parla inglese.
Ville Laurikari,

18

Prendo uno dei due approcci, di solito qualunque cosa suoni meglio.

Nello spiegare cose come requisiti o giustificazione, vado con "noi" come hai lì:

// We can't proceed unless the user has given us this information.

Se sto spiegando il processo, tendo a usare una voce imperativa (comando) (correggimi se questo è il termine sbagliato):

// Get the foo from bar and make sure it follows our required format.

Quest'ultimo può avvicinarsi pericolosamente alla ripetizione del codice, ma ci sono usi. Quindi non sta usando io o noi, ma in realtà implica "tu".


Anche questo è esattamente il mio stile. Entrambi i modi in cui descrivi hanno il loro posto.
Zourtney,

9
Anche quest'ultimo ha il "nostro". Trovo interessante che le persone scrivano naturalmente commenti al plurale in prima persona.
Reid,

@Row wow sì, era solo un istinto, non me ne sono nemmeno accorto. Ma avrebbe potuto facilmente dire "il".
Tesserex,

8

Penso che sia solo una variazione dello stile di scrittura accademica / tecnica, che è spesso impersonale. Usando la voce passiva, usando il "noi reale" ("uno" è così datato).

Come regola generale, non è specifico chi lo utilizzerà comunque - il commento è a beneficio dei manutentori, non normalmente solo per l'autore originale.

Detto questo, uso spesso la prima persona nei commenti per spiegare perché ho preso decisioni particolari e cosa stavo pensando.


3
Personalmente non ritengo che "uno" sia datato. Sì, è in uso meno comune, perché non è qualcosa che si usa di volta in volta. Tuttavia, ci sono poche o nessuna possibilità che l'uso di "one" in quel senso di un commento sia illeggibile o altrimenti sminuisca l'usabilità.
Billy ONeal,

7

I commenti dovrebbero dirti perché si sta facendo qualcosa, non cosa si sta facendo. Se ciò che viene fatto non è ovvio dal codice, correggi il codice, non solo aggiungere un commento. In prima persona, in seconda persona, ecc. Non importa, ciò che conta è comunicare le informazioni necessarie.

Se devi narrare il codice, preferisci gli imperativi, ad es

'ensure that the window is not minimized
If WindowState <> 1 Then
    'resize the window
    '...
End if

(E per favore non usare costanti nude come "1" nel codice)


3
+1 per aver preferito l'imperativo, non ci avevo pensato. Inoltre, sì, non avrei dovuto usare il nudo 1. Di solito sono abbastanza bravo a riguardo ... Lasciami pubblicare una delle poche volte che mi è passato per la testa su Internet.
dlras2,

6

Forse ci riferiamo ai ragazzini all'interno del programma per far accadere la magia? :)

La voce passiva in lingua inglese è difficile da usare e suona male. Alla gente piace usare i moduli di persona (io, tu, noi, uno).

Esempio:

(Tu / noi / uno devi) usare un delegato per passare gli eventi di ridimensionamento della finestra al genitore

È necessario utilizzare un delegato per passare gli eventi di ridimensionamento della finestra al padre

Un altro esempio (nota che spesso puoi omettere i moduli persona nei commenti):

(Abbiamo) preso un'eccezione. (Saremo) mostrando una finestra di errore.

È stata rilevata un'eccezione e verrà visualizzata una finestra di dialogo di errore.

PS. Sostituire passivo con "te" è così comune nella lingua inglese che ha iniziato a perdere anche in altre lingue. Sembra estremamente divertente, ad esempio, in finlandese, dove esiste la forma singolare in seconda persona (come l'inglese "tu").


Penso che linguisticamente questo non sia corretto. Il primo è l'imperativo, non ha un soggetto. "Per favore chiudi la porta." Mentre significa all'incirca lo stesso di "per favore, puoi chiudere la porta?" è una distinta forma grammaticale, non un'abbreviazione. Nel secondo esempio, potresti anche dire "(ha) catturato un'eccezione. (Sarà) mostrando una finestra di errore".
Inca,

3

Se stai parlando dell'esecuzione del programma, non è "noi", "tu" o "io". L'antropomorfismo può essere così diffuso da essere impercettibile ma è un'abitudine pericolosa (Avviso PDF. Avviso Dijkstra.):

Penso che l'antropomorfismo sia il peggiore di tutti. Ora ho visto programmi "cercare di fare cose", "voler fare cose", "credere che le cose fossero vere", "conoscere le cose" ecc. Non essere così ingenuo da credere che questo uso del linguaggio sia innocuo. Invita il programmatore a identificarsi con l'esecuzione del programma e quasi gli impone l'uso della semantica operativa.


2
Dijkstra Attenzione! Se solo più cose ne avessero una :(
Tom Anderson il

Non penso che scrivere commenti nel plurale in prima persona sia un antropomorfismo. Penso che implichi "Ora istruiamo il computer a ...", come se il programmatore che scrivesse il commento guidasse il lettore attraverso il suo codice.
Blujay,

2

Non penso che né la prima persona né il "noi reale" sembrino poco professionali o distraenti. Penso che dovremmo fare uno sforzo per scrivere commenti in lingua inglese in E-Prime , il sottoinsieme dell'inglese che non possiede il verbo "essere".

Se usi eccessivamente "essere" nei commenti otterrai dichiarazioni confuse come:

// X is 10
// X is the user data of the newly-authenticated user
// X is a BigInt

Beh, forse non tutto in una volta, ma l'uguaglianza può davvero rendere poco chiari i commenti.

Penso che i requisiti di scrittura in E-Prime aiutino a renderli più chiari, poiché lo scrittore deve indicare un attore insieme all'azione.


Nozione interessante; come si esprimono le nozioni di "X dovrebbe essere almeno 5" o "Y non deve essere maggiore di 23"?
supercat

@supercat - "Il valore di X deve avere magnitudo 5 o maggiore". "Il valore di Y non deve superare 23". L'uguaglianza, logica o aritmetica, non dovrebbe nemmeno usare il verbo "essere". "X deve contenere 5" o "X restituisce 5" o "X ha il valore 5" o almeno. Se ti imbatti in un commento particolarmente poco chiaro, cerca i verbi "essere". Scommetto che il commento poco chiaro usa i verbi notando ma "essere". Si noti inoltre che ho scritto la risposta sopra in E-Prime.
Bruce Ediger,

Il secondo va bene; il primo non è così tanto, poiché -6 ha una magnitudine di 5 o maggiore.
supercat

@supercat - molto bene. "X deve avere un valore intero con segno di 5 o superiore". Negli Stati Uniti, chiameremmo la tua "grandezza" "valore assoluto", il che rafforza il mio punto di descrivere il valore di una variabile, non la variabile come valore, che deriva dall'is-of-uguaglianza.
Bruce Ediger,

2

Lo stile corretto per i commenti è la terza persona impersonale; " Il modulo non è ridotto a icona, quindi può essere ridimensionato in modo sicuro ".

  • Sono ingenuo.
  • Sei rozzo.
  • Siamo troppo formali (e reali).

Ogni frase può essere riformulata in questo modo (vedi sopra) ed è l'unico modo professionale per scrivere.


11
-1 perché: non esiste un modo corretto, trovo il tuo riepilogo di I / You / We un po 'fuori dal mondo e non capisco l'ultima parte. A parte: quando dico "noi" nei miei commenti, non sto cercando di parlare come un re - sto parlando con te, il ragazzo che legge il mio codice e ti guida attraverso i miei pensieri fianco a fianco.
Doppelgreener,

2

Dipende dal commento.

In genere, scrivo commenti nel modo suggerito da The Mouth of a Cow . Scrivo sempre anche commenti generatori di documentazione (Doxygen, JavaDoc) in questo modo.

Tuttavia, molti spesso trascurano l'uso del controllo versione per identificare chi ha scritto / toccato le righe nei file di origine. Ci sono momenti in cui dire "io" è appropriato, specialmente quando è abbastanza facile rintracciare l'io alla persona che ha scritto il codice. Se tu, come individuo, hai preso una decisione, ti consiglio di usare "I" (insieme al controllo della versione) per identificare e tenere traccia delle decisioni in linea con il codice.


+1 per Doxygen e JavaDoc. Concordo sul fatto che la documentazione sia distinta dai commenti (anche se alcuni commenti generano documentazione) e faccio del mio meglio per mantenere tale documentazione un passo più formale del mio commento.
dlras2,

1

Il mio buon vecchio padre (mhrip) avrebbe chiesto: "Non hai cose più importanti con cui preoccuparti?"

Tuttavia, personalmente, mi piace il "noi". E mi trovo anche a chiedermi perché scrivo in documenti a monte, nemmeno in codice, considerando che sono l'unico dipendente della mia azienda.

Tuttavia, io stesso e sono d'accordo sul fatto che in questo modo ci sentiamo meno soli :)


1

Sono l'unico che scrive "noi" e pensa "io e il computer" (o "la mia squadra e il computer")? "Noi" gestiremo la richiesta che l'esterno ci ha dato, ciò significa che "noi" dobbiamo leggere la richiesta, aprire alcune finestre, fare dei calcoli, in base ai "nostri" requisiti aziendali. Questo aiuta anche a vedere il codice come parte del tuo lato, non come nemico :-)


0

Per brevi commenti, a volte scrivo in seconda persona, come se stessi insegnando a qualcun altro, quasi come un messaggio diretto allo sviluppatore successivo a leggere il commento. Ad esempio

//You can get a session_id from SYSSession.getSessionID() if you need one

Commenti più lunghi (come un'intestazione di funzione lunga o diverse righe di descrizione dell'algoritmo) Cerco di rimanere neutrale, senza prima persona, seconda persona o terza persona.


La passiva inglese suona raramente bene: "È possibile ottenere un session_id da SYSSession.getSessionID () se ne è necessario uno"
jkj

0

Hai aggiunto questo commento perché il codice non era abbastanza chiaro. In genere trovo che esprimere l'intento attraverso metodi ben definiti eviti l'uso dei commenti. Ad esempio, quella linea di potrebbe essere stata spostata in un metodo denominato CanThisFormBeResized.

Un metodo ben definito, per quanto piccolo, batte un commento, perché è facile che commenti e codice non siano sincronizzati.

Quindi, se la maggior parte dei commenti può essere espressa in codice, ciò lascia pochissime ragioni per i commenti

  • Se il tuo commento è la tua opinione, inizia con "I"
  • Se ritieni che il tuo commento debba essere un'opinione condivisa (ad esempio una buona pratica), inizia con "noi"
  • Se il tuo commento è indirizzato a un codice non corretto scritto da una mezza astuzia, quindi scarta il commento e cammina oltre e dai loro un codice confuso da un collega, quindi affronta questo faccia a faccia con loro.

1
Scusa, ma non sono proprio un fan di questo stile. Soprattutto perché questo codice viene usato una volta, in un unico posto, ed è già l'unica cosa nel metodo di ridimensionamento. Preferirei un breve commento ben definito per aumentare la complessità attraverso il refactoring, specialmente quando si lavora con il debugger VB6. A parte questo, CanThisFormBeResizedprobabilmente dovrebbe essere ThisFormCanBeResizedse verrà utilizzato come If ThisFormCanBeResized Then.
dlras2,

1
Questa è la preferenza. Prendo un metodo booleano privato come function() { return this.windowState != 1 }su qualsiasi commento. +1 da me
keppla

1
@Dan, cosa succederebbe se arrivasse qualcun altro più tardi: perché farli cercare e ri-capire la logica per determinare se è possibile ridurre a icona una finestra? Potrebbero anche non individuare la tua piccola riga di codice con un commento e aggiungere il proprio. Ora hai 2 posti che devono essere modificati se la logica cambia e 2 posti in cui i commenti potrebbero non essere sincronizzati con il codice. Perché un metodo ben definito a 1 riga (che non cambia stato) ha aggiunto complessità? È il refactoring più semplice e uno dei più puliti che ci sia.
Steve Dunn,

0

Come regola generale suggerirei di usare la prima persona, cioè I.

Perché? Non a causa della natura possessiva di me, ma perché quando le persone parlano in qualsiasi altra prospettiva, tendono a usare troppe parole o rendere le frasi troppo complesse e si perdono nel tentativo di spiegare le cose. La prima persona tende ad essere sempre più facile da leggere.


0

Personalmente scriverei (in C #):

if (WindowState != WindowState.Minimised)
{
     ResizeWindowSafely();
}

O qualcosa del genere, non necessitando quindi dei commenti.


ResizeWindowSafelyimplicherebbe che può essere chiamato se non sai se ridimensionare o meno, e quindi dovrebbe includere if (WindowState != WindowState.Minimised)se stesso.
dlras2,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.