Rust: Desarrollar una guía de estilo de comentarios de documentos

Creado en 5 ene. 2013  ·  17Comentarios  ·  Fuente: rust-lang/rust

Dado que se espera que cambie una gran cantidad de código de biblioteca antes de la versión 1.0, no tiene mucho sentido hacer esto ahora, pero las bibliotecas core y std deben usar un estilo coherente para la documentación de la API. La wiki intenta especificar convenciones, pero es necesario desarrollarlas y aplicarlas al código base.

En este momento, algunos doc-comments están escritos en indicativo en tercera persona:

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

y algunos están escritos en 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.
     */

Estos dos ejemplos ilustran otra inconsistencia: algunos resúmenes (la primera línea del comentario) no tienen puntuación terminal, mientras que otros terminan con un punto.

Una cosa más que varía es el estilo de los comentarios en sí. Algunos comentarios de documentos se parecen a

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

mientras que otros se parecen

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

Una vez que estas reglas (y otras) estén codificadas, me complacerá comenzar a revisar los comentarios del documento y actualizarlos.

P-low

Comentario más útil

Estilo descriptivo:

Estilo imperativo:

Todos 17 comentarios

: +1: por discutir esto. Quiero contribuir con documentos, pero no quiero hacer más trabajo para ti una vez hecho. ;)

A modo de comparación, el estilo estándar de Python es usar el imperativo "Devolver el ...", que encuentro que funciona bien:

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

Go se ha decidido por el estilo no imperativo: http://golang.org/pkg/

Visitando para triaje.

Personalmente, prefiero los verbos imperativos y un punto al final. En cuanto al estilo de los comentarios de documentos, no creo que debamos imponer ninguna forma en particular sobre otra, al menos no mientras el lenguaje define múltiples formas de hacerlo. Además, mi forma preferida es

/**
 * doc string
 */

Yo también prefiero el imperativo. El estilo también debe incluir una sintaxis unificada para hacer referencia a tipos y argumentos, por lo que rustdoc puede anotarlos / hipervincularlos correctamente. Eso es en el camino aunque

Visitando para triaje. Tengo muy poca opinión sobre esto.

Estilo descriptivo:

Estilo imperativo:

Yo mismo prefiero las versiones descriptivas porque la definición de un método no hace nada hasta que le digo que:

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

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

Soy sensible al argumento de Kud1ing. Además, si lee en voz alta una línea de la forma en que se presenta en el documento:

cero Devuelve la identidad aditiva, 0.

entonces la forma declarativa la convierte en una oración real "zero" returns the additive identity, 0. .

@Armavica : que en realidad es una forma corta de The method "zero" returns the additive identity, 0 .

La documentación y la interfaz es presentar algo a la audiencia. Creo que la forma imperativa tiene más sentido cuando explica qué / cómo / por qué está sucediendo algo en la implementación.

También hay https://github.com/mozilla/rust/issues/9403 sobre el estilo de los ejemplos en la documentación.

Arado.

De los comentarios aquí, el estilo descriptivo (por ejemplo, "Convierte un byte en una cadena") parece más popular que el estilo imperativo ("Convierte un byte en una cadena"). No me importa mucho el camino que tomemos, pero sería bueno tener una decisión oficial al respecto.

Creo que llamar a esto el estilo imperativo está mal. No es imperativo, porque no está instruyendo a nadie para que haga nada. Creo que es el presente de indicativo en primera persona. Sospecho que las ganas de escribir

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

proviene de la mentalidad de "Yo soy la función. ¿Qué hago?", por lo que es el presente de indicativo en primera persona.

Sin embargo, al leer la documentación, la mayoría de los lectores tratarán naturalmente la función como un sujeto en tercera persona del singular en lugar de como un sujeto en primera persona. Para ello, la documentación debe estar escrita en tercera persona del singular en lugar de en primera persona.


El único argumento razonable que puedo ver para considerar que este es el imperativo en lugar del presente de indicativo en primera persona es cuando la cadena de documentos describe una declaración de función que se espera que el usuario implemente. Esto es muy común en los lenguajes OO, pero en Rust solo se aplica a los métodos de rasgos. Este caso sugiere el uso del imperativo porque le dice lo que debe hacer para implementar el método correctamente.

Pero no considero que este argumento sea convincente. El caso de uso principal de la documentación es decirle al lector cómo _usar_ la API, no cómo implementarla. La cantidad de usos de una API supera ampliamente la cantidad de implementaciones (en todos los casos, excepto en los más esotéricos). Por lo tanto, creo que tiene más sentido usar el presente de indicativo en tercera persona del singular que usar el imperativo, incluso para los métodos de rasgo.

Otra cosa con la que lidiar: guiones o guiones cortos:

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

La preferencia por un guión corto en lugar de un guión en estos tipos de términos de coordenadas / relación / conexión es una cuestión de preferencia de estilo, no de "corrección" ortográfica inherente; ambos son igualmente "correctos", y cada uno es el estilo preferido en algunas guías de estilo.

¿Fue útil esta página
0 / 5 - 0 calificaciones