Rust: Desenvolver guia de estilo de comentário de documento

Criado em 5 jan. 2013  ·  17Comentários  ·  Fonte: rust-lang/rust

Com muitos códigos de biblioteca que devem ser alterados antes do lançamento 1.0, não faz muito sentido fazer isso agora, mas as bibliotecas principais e std devem usar um estilo consistente para a documentação da API. O wiki faz algumas tentativas de especificar convenções, mas elas precisam ser aprimoradas e realmente aplicadas à base de código.

No momento, alguns comentários de documentos estão escritos no indicativo de terceira pessoa:

pub fn map<T, U>(opt: &Option<T>, f: fn(x: &T) -> U) -> Option<U> {
    //! Maps a `some` value by reference from one type to another

e alguns são escritos no imperativo:

pub fn chain<T, U>(opt: Option<T>,
                   f: fn(t: T) -> Option<U>) -> Option<U> {
    /*!
     * Update an optional value by optionally running its content through a
     * function that returns an option.
     */

Esses dois exemplos ilustram outra inconsistência: alguns resumos (a primeira linha do comentário) não têm pontuação terminal, enquanto outros terminam com um ponto.

Mais uma coisa que varia é o próprio estilo do comentário. Alguns comentários de documentos parecem

/*!
 * foo...
 * bar...
 * baz...
 */

enquanto outros parecem

/*!
 foo...
 bar...
 baz...
 */

Assim que essas regras (e outras) forem codificadas, ficarei feliz em começar a examinar os comentários do documento e atualizá-los.

P-low

Comentários muito úteis

Estilo descritivo:

Estilo imperativo:

Todos 17 comentários

: +1: para discutir isso. Quero contribuir com documentos, mas não quero fazer mais trabalho para você depois que terminar. ;)

Para efeito de comparação, o estilo Python padrão é usar o imperativo "Devolver o ...", que acho que funciona bem:

http://www.python.org/dev/peps/pep-0257/#one -line-docstrings

Go optou pelo estilo não imperativo: http://golang.org/pkg/

Visitando para triagem.

Pessoalmente, prefiro verbos imperativos e um ponto final no final. Quanto ao estilo de comentário de documento, não acho que devemos impor uma maneira particular sobre outra, pelo menos não enquanto a linguagem definir várias maneiras de fazê-lo. Além disso, minha forma preferida é

/**
 * doc string
 */

Eu também prefiro o imperativo. O estilo também precisa incluir uma sintaxe unificada para fazer referência a tipos e argumentos, de forma que rustdoc possa anotá-los / criar um hiperlink adequado. Isso é mais adiante, no entanto

Visitando para triagem. Tenho muito pouca opinião sobre isso.

Estilo descritivo:

Estilo imperativo:

Eu mesmo prefiro as versões descritivas porque uma definição de método não faz nada até que eu diga para:

class Machine
{
    // Self-destructs the machine, if necessary.
    void self_destruct();
};

// Self-destruct!
if ( emergency )
  machine.self_destruct();

Sou sensível ao argumento de Kud1ing. Além disso, se você ler uma linha em voz alta da forma como é apresentada no documento:

zero Retorna a identidade aditiva, 0.

então a forma declarativa a torna uma sentença real "zero" returns the additive identity, 0. .

@Armavica : Que é na verdade uma forma abreviada de The method "zero" returns the additive identity, 0 .

Documentar e fazer interface é apresentar algo ao público. Acho que a forma imperativa faz mais sentido, quando você explica o que / como / por que algo está acontecendo na implementação.

Também há https://github.com/mozilla/rust/issues/9403 sobre o estilo dos exemplos na documentação.

Arado.

A partir dos comentários aqui, o estilo descritivo (por exemplo, "Converte um byte em uma string.") Parece mais popular do que o estilo imperativo ("Converte um byte em uma string."). Não me importo muito para que lado vamos, mas seria bom ter uma decisão oficial sobre isso.

Acho que chamar isso de estilo imperativo é errado. Não é obrigatório, porque não está instruindo ninguém a fazer nada. Acho que é o indicativo presente na primeira pessoa. Eu suspeito que a necessidade de escrever

/// Frob the twaddle.
fn frob() {}

decorre da mentalidade de "Eu sou a função. O que eu faço?", então é o indicativo presente na primeira pessoa.

No entanto, ao ler a documentação, a maioria dos leitores irá naturalmente tratar a função como um assunto de terceira pessoa do singular em vez de um assunto de primeira pessoa. Para tanto, a documentação deve ser redigida na terceira pessoa do singular e não na primeira pessoa.


O único argumento razoável que posso ver para considerar isso como o imperativo, em vez do indicativo presente na primeira pessoa, é quando o docstring descreve uma declaração de função que se espera que o usuário implemente. Isso é muito comum em linguagens OO, mas em Rust isso só se aplica a métodos de característica. Este caso sugere o uso do imperativo porque está dizendo a você o que você deve fazer para implementar o método corretamente.

Mas não considero esse argumento persuasivo. O principal caso de uso para documentação é dizer ao leitor como _usar_ a API, não como implementá-la. O número de usos de uma API supera em muito o número de implementações (em todos os casos, exceto o mais esotérico). Portanto, acredito que faz mais sentido usar o indicativo presente na terceira pessoa do singular do que usar o imperativo, mesmo para métodos de traço.

Outra coisa com que lidar: hypens ou en travessões:

https://en.wikipedia.org/wiki/Dash#Relationships_and_connections

A preferência por um travessão em vez de um hífen nesses tipos de termos de coordenada / relação / conexão é uma questão de preferência de estilo, não de "correção" ortográfica inerente; ambos são igualmente "corretos" e cada um é o estilo preferido em alguns guias de estilo.

Esta página foi útil?
0 / 5 - 0 avaliações