Rust: Kembangkan panduan gaya komentar dokumen

Dibuat pada 5 Jan 2013  ·  17Komentar  ·  Sumber: rust-lang/rust

Dengan banyak kode perpustakaan yang diharapkan berubah sebelum rilis 1.0, tidak masuk akal untuk melakukan ini sekarang, tetapi perpustakaan inti dan std harus menggunakan gaya yang konsisten untuk dokumentasi API. Wiki melakukan beberapa upaya untuk menentukan konvensi, tetapi ini perlu disempurnakan dan benar-benar diterapkan ke basis kode.

Saat ini, beberapa komentar dokumen ditulis dalam indikatif orang ketiga:

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

dan beberapa ditulis dalam imperatif:

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.
     */

Kedua contoh ini menggambarkan inkonsistensi lain: Beberapa ringkasan (baris pertama komentar) tidak memiliki tanda baca terminal, sementara yang lain diakhiri dengan titik.

Satu hal lagi yang bervariasi adalah gaya komentar itu sendiri. Beberapa komentar dokumen terlihat seperti

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

sementara yang lain terlihat seperti

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

Setelah aturan ini (dan lainnya) dikodifikasi, saya akan dengan senang hati mulai membaca komentar dokumen dan memperbaruinya.

P-low

Komentar yang paling membantu

Gaya deskriptif:

Gaya imperatif:

Semua 17 komentar

:+1: untuk membahas ini. Saya ingin menyumbangkan dokumen, tetapi saya tidak ingin membuat lebih banyak pekerjaan untuk Anda setelah selesai. ;)

Sebagai perbandingan, gaya Python standar adalah menggunakan perintah "Kembalikan ...", yang menurut saya berfungsi dengan baik:

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

Go telah memilih gaya non-imperatif: http://golang.org/pkg/

Mengunjungi untuk triase.

Secara pribadi, saya lebih suka kata kerja imperatif, dan titik di akhir. Adapun gaya komentar dokumen, saya tidak berpikir kita harus memaksakan cara tertentu di atas yang lain, setidaknya tidak sementara bahasa mendefinisikan banyak cara untuk melakukannya. Juga, cara pilihan saya adalah

/**
 * doc string
 */

Saya juga lebih suka yang imperatif. Gaya juga perlu menyertakan sintaks terpadu untuk merujuk ke tipe dan argumen, jadi rustdoc dapat membuat anotasi/hyperlink dengan benar. Itu di ujung jalan sekalipun

Mengunjungi untuk triase. Saya memiliki sedikit pendapat tentang ini.

Gaya deskriptif:

Gaya imperatif:

Saya sendiri lebih suka versi deskriptif karena definisi metode tidak melakukan apa pun sampai saya menyuruhnya:

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

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

Saya masuk akal untuk argumen kud1ing. Selanjutnya, jika Anda membacakan sebuah baris dengan cara yang disajikan dalam dokumen:

zero Mengembalikan identitas aditif, 0.

kemudian bentuk deklaratif membuatnya menjadi kalimat nyata "zero" returns the additive identity, 0. .

@Armavica : Yang sebenarnya adalah bentuk pendek dari The method "zero" returns the additive identity, 0 .

Mendokumentasikan dan antarmuka adalah menyajikan sesuatu kepada penonton. Saya pikir bentuk imperatif lebih masuk akal, ketika Anda menjelaskan apa/bagaimana/mengapa sesuatu terjadi dalam implementasi.

Ada juga https://github.com/mozilla/rust/issues/9403 tentang gaya contoh dalam dokumentasi.

Bajak.

Dari komentar di sini, gaya deskriptif (misalnya, "Mengubah byte menjadi string.") tampaknya lebih populer daripada gaya imperatif ("Mengubah byte menjadi string."). Saya tidak terlalu peduli ke mana kita pergi, tetapi akan menyenangkan untuk memiliki keputusan resmi tentang ini.

Saya pikir menyebut ini gaya imperatif salah. Itu tidak penting, karena itu tidak memerintahkan siapa pun untuk melakukan apa pun. Saya pikir itu adalah orang pertama yang hadir indikatif. Saya menduga bahwa dorongan untuk menulis

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

berasal dari pola pikir "Saya adalah fungsi. Apa yang saya lakukan?", jadi itu adalah indikatif orang pertama saat ini.

Namun, saat membaca dokumentasi, sebagian besar pembaca secara alami akan memperlakukan fungsi tersebut sebagai subjek tunggal orang ketiga alih-alih subjek orang pertama. Untuk itu, dokumentasi harus ditulis dalam orang ketiga tunggal, bukan orang pertama.


Satu-satunya argumen yang masuk akal yang dapat saya lihat untuk mempertimbangkan ini sebagai imperatif daripada indikatif orang pertama saat ini adalah ketika docstring menjelaskan deklarasi fungsi yang diharapkan dapat diterapkan oleh pengguna. Ini sangat umum dalam bahasa OO, tetapi di Rust itu hanya berlaku untuk metode sifat. Kasus ini menyarankan penggunaan imperatif karena memberi tahu Anda apa yang harus Anda lakukan untuk menerapkan metode dengan benar.

Tapi saya tidak menganggap argumen ini persuasif. Kasus penggunaan utama untuk dokumentasi memberi tahu pembaca cara _menggunakan_ API, bukan cara mengimplementasikannya. Jumlah penggunaan API jauh melebihi jumlah implementasi (dalam semua kasus kecuali yang paling esoterik). Oleh karena itu, saya percaya bahwa lebih masuk akal untuk menggunakan indikatif saat ini dalam bentuk orang ketiga tunggal daripada menggunakan imperatif, bahkan untuk metode sifat.

Hal lain yang harus dihadapi: tanda hubung atau tanda hubung:

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

Preferensi untuk tanda hubung en daripada tanda hubung dalam jenis istilah koordinat/hubungan/hubungan ini adalah masalah preferensi gaya, bukan "kebenaran" ortografis yang melekat; keduanya sama-sama "benar", dan masing-masing adalah gaya yang disukai di beberapa panduan gaya.

Saya telah mengirimkan RFC: https://github.com/rust-lang/rfcs/pull/505

Apakah halaman ini membantu?
0 / 5 - 0 peringkat