"I", "Nós" ou Nem na documentação do código

41

Eu me pego escrevendo (espero) comentários úteis na documentação de código (C ++) do tipo:

The reason we are doing this is...

A razão pela qual eu uso "nós" em vez de "eu" é porque faço muita escrita acadêmica onde "nós" é frequentemente preferido.

Então aqui está a pergunta. Existe um bom motivo para preferir um ao outro na documentação do código:

  1. Use "Nós": a razão pela qual estamos fazendo isso é ...
  2. Use "I": a razão pela qual estou fazendo isso é ...
  3. Use meu nome: O motivo [my name]disso foi ...
  4. Voz passiva: A razão pela qual isso foi feito é ...
  5. Nem: Faça isso porque ...

Eu escolhi o número 1 porque estou acostumado a escrever dessa maneira, mas a documentação não é para o escritor, é para o leitor, por isso estou me perguntando se adicionar o nome do desenvolvedor é útil ou se isso apenas acrescenta mais uma coisa que precisa ser ser alterado ao manter o código.

Alan Turing
fonte
Eu acho que é uma preferência pessoal. Não vejo nenhuma razão para que um seja mais claro que o outro em geral.
ConditionRacer
6
Que tal # 5: "Quando no curso de eventos humanos ...";) #
waxwing
8
"Há quatro pontos e sete segundos atrás, nossos antepassados ​​aprenderam que o foo deve ser barrado, a menos que nossas forças sejam vencidas com NULL"
Philip
Fortemente relacionado ao English.SE: Por que os programadores sempre usam 'nós' quando na verdade eles significam 'eu' ou 'você'? (Que foi, infelizmente, fechado)
Izkata
2
Por que não diz This code was written like this because...? (Voz passiva)
Alvin Wong

Respostas:

77

Eu iria com:

# 6 Declarativo: ...

Em vez de dizer "A razão pela qual isso foi feito é porque cada Foo deve ter uma barra", basta dizer "Cada Foo deve ter uma barra". Faça o comentário em uma declaração ativa do motivo, em vez de passiva. Geralmente, é um estilo de escrita melhor, se encaixa melhor na natureza do código (o que faz alguma coisa) e a the reason this was donefrase não adiciona nenhuma informação. Também evita exatamente o problema que você está encontrando.

Bobson
fonte
você se importaria de elaborar um pouco sobre por que faria isso? Sem uma explicação, essa resposta parece mais uma opinião simples, um pouco conflitante com as diretrizes de backup : '... A opinião não é tão ruim, desde que seja apoiada por algo diferente de "porque eu sou um especialista" , ou "porque eu disse isso" ou "apenas porque". Use suas experiências específicas para fazer backup de suas opiniões, como acima, ou aponte para algumas pesquisas que você fez na Web ou em outro lugar que fornecem evidências para apoiar suas reivindicações ... '
gnat 15/03/2013
15
@gnat "A razão pela qual isso foi feito" não adiciona nada à explicação. Os comentários devem conter apenas texto suficiente para transmitir o ponto e não mais. Deixe de fora os detalhes, preâmbulos e outros textos de preenchimento.
David Harkness 15/03
@gnat - Na verdade, acabei de adicionar mais quando vi seu comentário.
22413 Bobson
1
Eu acho que meu exemplo foi muito simplista, porque de fato "a razão pela qual isso foi feito" não acrescenta nada. Mas há casos em que uma situação complicada exige alguma explicação e, nesse caso, acho mais natural usar "nós" ou "eu", assim como usei "eu" várias vezes neste comentário. Mas acho que sua resposta é clara em espírito: "declarativo" sugere: use a menor quantidade de palavras que forneçam o argumento claramente.
Alan Turing
7
Eu li //como becausena maioria dos casos.
Ilmo Euro
23

Eu prefiro nenhum e, na verdade, deixaria de lado essa frase introdutória e chegaria ao ponto. Eu também tento evitar apenas dizer "isso" porque não deixa como saber se o comentário está sincronizado com o código. Em outras palavras, em vez de:

// The reason this was done is to prevent null pointer exceptions later on.

Eu diria:

// Frobnicate the widget first so foo can never be null.

O fato de você adicionar um comentário implica que você está indicando um motivo, para que não precise dizer redundantemente às pessoas que está explicando o motivo. Apenas torne o motivo o mais específico possível, para que eles saibam o mais claramente possível como manter esse código posteriormente.

Karl Bielefeldt
fonte
4

Em C # (e na maioria das ferramentas de documentação em outros idiomas), há uma diferença entre documentação e comentários em linha. Minha opinião pessoal é que você sempre deve usar comentários formais e declarativos, como Bobson e outros sugerem na documentação de uma classe ou membro, mas dentro do código, não há nada errado em ser menos formal. De fato, às vezes um comentário informal é mais eficaz para explicar por que algo está sendo dom do que uma exposição completa em inglês formal.

Aqui está uma amostra que eu acho que ilustra o ponto.

/// <summary>
/// Takes data from the remote client and stores it in the database.
/// </summary>
/// <param name="data">The data to store.</param>
public void StoreData(ComplexObject data)
{
    // Don't take candy from strangers
    ComplexObject safeData = SanitizeData(data);
    ...
}
pswg
fonte
4
Nota lateral: SanitizeDatadeve retornar a SafeComplexObject. ;)
Jon Purdy
Concordo, mas prefiro comentários literais (e não metafóricos), especialmente se houver desenvolvedores de diferentes idiomas.
John B. Lambe
2

Outra idéia a considerar seria um teste de unidade bem elaborado que demonstre por que o código funciona da mesma maneira que no lugar de escrever um comentário descritivo. Isso tem alguns benefícios em escrever comentários:

  1. Os comentários nem sempre mudam quando o código é alterado, o que pode gerar confusão posteriormente.

  2. Os testes de unidades oferecem ao mantenedor uma maneira fácil de jogar com o código. Aprender uma nova base de código pode ser muito mais fácil se você tiver unidades individuais que podem ser quebradas para observar quais alterações.

Embora essa avenida exija mais trabalho antecipadamente, o teste de unidade pode ser uma excelente forma de documentação.

mortalapeman
fonte
1

Bons comentários são difíceis de escrever, e mesmo os melhores são difíceis de ler e compreender. Se o seu comentário é conciso o suficiente para eu absorver e preciso o suficiente para transmitir o que eu preciso saber sobre o código, não faz nenhuma diferença quais pronomes você usa.

Eu odiaria desencorajar alguém de comentar seu código porque está preocupado com o caso, o tempo e a pessoa de seus pronomes.

John M Gant
fonte
Deixe-me esclarecer: para comentários que se tornarão parte da documentação formal, um tom mais formal é apropriado e é melhor evitar "eu" e "nós". O que eu tinha em mente com esta resposta foi um comentário explicativo ocasional, por exemplo, quando você fez algo que pareceria errado para o próximo sujeito. Nesses casos, onde apenas pessoas que trabalham na mesma base de código o verão, digo: faça o que for que transmitir seu significado com mais clareza, mesmo que seja I wrote the code this way because...ou não what we really need here is.... Em esses casos, um comentário claro é mais importante do que um estilo rigoroso.
John M Gant
1

A razão pela qual eu uso "nós" em vez de "eu" é porque faço muita escrita acadêmica onde "nós" é frequentemente preferido.

É um estilo ruim, mesmo para trabalhos acadêmicos, a menos que você esteja tentando esconder quem realmente decidiu esse ponto exato.

Quanto à sua pergunta específica: eu não deixaria esse comentário, a menos que comece com:

// TODO: clean this up, ...

ou, a menos que explique algo muito importante, isso pode não ser tão claro no código. Nesse caso, faça o comentário o mais breve possível.

BЈовић
fonte