Apa yang harus saya sertakan dalam komentar dokumentasi XML?

13

Saya mencoba membuat poin mendokumentasikan kode saya lebih baik, terutama ketika datang ke komentar XML pada anggota kelas, tetapi seringkali itu hanya terasa konyol.

Dalam hal event handler, konvensi penamaan dan parameternya standar dan jelas:

/// <summary>
/// Handler for myCollection's CollectionChanged Event.
/// </summary>
/// <param name="sender">Event Sender</param>
/// <param name="e">Event Arguments</param>
private void myCollection_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
{
    // actual code here...
}

Saya juga sering memiliki properti sederhana yang (IMO) dinamai dengan jelas sehingga ringkasannya berlebihan:

/// <summary>
/// Indicates if an item is selected.
/// </summary>
public bool ItemIsSelected
{ get { return (SelectedItem != null); } }

Saya tidak merasa komentar seperti itu tidak menambahkan informasi yang belum disampaikan oleh deklarasi itu sendiri. Kebijaksanaan umum tampaknya adalah bahwa komentar yang mengulang kode sebaiknya dibiarkan tidak tertulis.

Jelas, dokumentasi XML lebih dari sekadar komentar kode inline biasa, dan idealnya akan memiliki cakupan 100%. Apa yang harus saya tulis dalam kasus seperti itu? Jika contoh-contoh ini OK, nilai apa yang mereka tambahkan yang mungkin tidak saya hargai sekarang?

mbmcavoy
sumber
6
"dan idealnya akan memiliki cakupan 100%" - Itu sangat bisa diperdebatkan. Saya suka mereka untuk antarmuka publik jenis semata-mata untuk popup intellisense, tetapi untuk metode pribadi mereka terlalu bertele-tele IMO
Ed S.
3
Cakupan 100% tidak berlaku untuk metode pribadi, terutama penangan acara.
SLaks
1
GhostDoc menulis dokumentasi saya untuk saya. "Apa yang Anda GetData()lakukan," Anda bertanya? Mengapa, itu Gets the datatentu saja!
Devin Burke
2
@Justin: GhostDoc terlihat sangat keren. Saya mungkin mengambilnya.
1
@Justin: arg, saya benci GhostDoc - awalnya tampak brilian tetapi setelah beberapa saat Anda menyadari bahwa Anda dapat melihat komentar yang dihasilkan secara otomatis satu mil jauhnya, biasanya ketika Anda kembali kode lama dan harus mencari tahu apa fungsinya. Walaupun XML membuatnya mudah untuk berkomentar semuanya, tetapi tidak memastikan bahwa komentar tersebut memiliki informasi aktual di dalamnya. GhostDoc memberi Anda titik awal yang baik, tetapi membuatnya sangat mudah untuk menjadi malas dan mengabaikan apa pun yang Anda tidak bisa mengetahuinya dengan melirik nama dan tanda tangan.
Keith

Jawaban:

10

Komentar dokumen XML dimaksudkan untuk anggota publik.

The compiler peringatan jelas menyatakan ini:

Komentar XML tidak ada untuk tipe atau anggota yang terlihat secara publik 'Type_or_Member'

Anda hanya harus menambahkan komentar XML ke anggota pribadi jika anggota tersebut belum jelas dari nama mereka.

Slaks
sumber
6

Pendapat murni di sini, jadi anggaplah itu layak.

Saya benci komentar xml berlebihan. Tidak diragukan lagi untuk hantu gaya doc yang hanya menambahkan spasi ke metode / nama properti. Itu tidak menambah nilai dan hanya mengacaukan pandangan saya tentang kode aktual.

Jika sesuatu membutuhkan klarifikasi, tentu saja, berikan komentar. Namun, banyak kejelasan dapat disampaikan dengan metode fokus kecil dengan nama yang bermakna. Jangan berkomentar kode jika Anda dapat memperbaikinya dan membuat komentar tidak perlu.

Bahkan jangan mulai saya pada penggunaan yang tidak perlu this.dan Me..

Sebagai catatan, saya ingin memiliki addin Visual Studio yang memungkinkan saya mengaktifkan visibilitas komentar xml. (petunjuk, petunjuk)

codeConcussion
sumber
Saya kira this.hal itu mungkin sudah dimulai karena untuk beberapa alasan pedoman resmi Microsoft direkomendasikan menggunakan konvensi penamaan yang sama persis untuk variabel lokal dan privatevariabel instan . Itu adalah gaya yang sangat cacat, IMO - dalam beberapa kasus Anda adalah satu jari gemuk jauh dari StackOverflowExceptiondalam properti sets atau MyProperty = MyProperty;menyebabkan bidang yang diinisialisasi ke nol daripada parameter konstruktor, dan bahkan Microsoft terus menggunakan secara m_internal sebagian besar waktu .
jrh
2

Pada anggota publik, dokumen XML harus cukup bertele-tele dan lengkap, seperti yang telah disebutkan oleh @SLaks.

Namun mereka dapat benar-benar berguna pada anggota pribadi, terlindungi atau internal juga karena Visual Studio akan mengisi intellisense dan membantu tooltips dengan komentar dokumen XML.

Ini berarti:

// describe what this does
private void DoSomething() 
{
    // or describe it here...

Mungkin dokumentasi yang cukup sempurna, tetapi:

/// <summary>describe what this does</summary>
private void DoSomething() 
{

Akan jauh lebih mudah dilihat dengan cepat dari tempat lain dalam kode Anda.

Umumnya pada komentar XML publik saya menulis untuk beberapa pengguna eksternal API, dan pada komentar XML internal saya menulis untuk saya atau orang lain di tim saya.

Melewati deskripsi parameter mungkin merupakan ide yang buruk untuk yang pertama dan baik untuk yang terakhir.

Saya akan menambahkan (terutama dalam dokumen API publik) selalu menyertakan apakah getatau setpada properti:

/// <summary>Gets a value indicating whether an item is selected.</summary>
public bool ItemIsSelected
{ 
    get { return SelectedItem != null; } 
}

Tidak jelas dari intellisense C # apakah tersedia getatau settidak, tetapi menaruhnya di komentar XML akan berarti Anda dapat langsung melihat dari tooltip.

Keith
sumber
Tergantung. Bagaimana jika Anda memiliki public gettetapi internal setsebagai properti? Bagaimana Anda berkomentar? :-)
Guillaume
1
@ Guillaume karena komentar XML bersifat publik, saya akan pergi hanya dengan mendokumentasikan getdalam XML dan mendokumentasikan setdengan //komentar biasa .
Keith