ฉันควรรวมอะไรไว้ในความคิดเห็นเอกสาร XML


13

ฉันพยายามทำให้จุดรหัสของฉันดีขึ้นโดยเฉพาะอย่างยิ่งเมื่อมันมาถึงความเห็น XML ในสมาชิกชั้นเรียน แต่บ่อยครั้งที่มันรู้สึกโง่

ในกรณีของตัวจัดการเหตุการณ์การตั้งชื่อและพารามิเตอร์เป็นมาตรฐานและชัดเจน:

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

ฉันมักจะมีคุณสมบัติง่าย ๆ ที่มีชื่อ (IMO) อย่างชัดเจนเพื่อให้การสรุปซ้ำซ้อน:

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

ฉันไม่รู้สึกว่าความคิดเห็นดังกล่าวไม่ได้เพิ่มข้อมูลใด ๆ ที่ประกาศเองยังไม่ได้นำเสนอ ภูมิปัญญาทั่วไปน่าจะเป็นที่ความคิดเห็นที่ทำซ้ำรหัสที่ดีที่สุดคือไม่ได้เขียนไว้

เห็นได้ชัดว่าเอกสาร XML เป็นมากกว่าความคิดเห็นแบบอินไลน์รหัสปกติและจะมีความครอบคลุม 100% อะไรควรฉันจะเขียนในกรณีดังกล่าว? หากตัวอย่างเหล่านี้ตกลงพวกเขาเสริมคุณค่าอะไรบ้างที่ฉันอาจไม่เห็นคุณค่าในตอนนี้


6
"และจะมีความครอบคลุม 100%" - เป็นที่ถกเถียงกันมาก ฉันชอบพวกเขาสำหรับอินเทอร์เฟซสาธารณะประเภท แต่เพียงผู้เดียวสำหรับป๊อปอัพ Intellisense แต่สำหรับวิธีการส่วนตัวพวกเขาเพียงแค่พูดอย่างละเอียดเกินไป IMO
Ed S.

3
การครอบคลุม 100% ไม่ได้ใช้กับวิธีการส่วนตัวโดยเฉพาะตัวจัดการเหตุการณ์
SLAK

1
GhostDocเขียนเอกสารของฉันให้ฉัน "สิ่งที่ไม่GetData()ทำ" คุณถาม? ทำไมต้องเป็นGets the dataแน่นอน!
Devin Burke

2
@Justin: GhostDoc ดูดีมาก ฉันอาจหยิบมันขึ้นมา

1
@ จัสติน: แย้งฉันเกลียด GhostDoc - มันดูยอดเยี่ยมในตอนแรก แต่หลังจากนั้นไม่นานคุณก็รู้ว่าคุณสามารถสังเกตเห็นความคิดเห็นที่สร้างขึ้นโดยอัตโนมัติเป็นระยะทางหนึ่งไมล์โดยปกติแล้วเมื่อคุณกลับมาใช้รหัสเก่า ในขณะที่มันทำให้ง่ายมากที่จะแสดงความคิดเห็น XML ทุกอย่าง แต่ก็ไม่แน่ใจว่าความคิดเห็นเหล่านั้นมีข้อมูลจริงใด ๆ ในพวกเขา GhostDoc ให้คุณเป็นจุดเริ่มต้นที่ดี แต่ทำให้ขี้เกียจง่ายและทิ้งสิ่งที่คุณไม่สามารถหาได้ด้วยการมองดูที่ชื่อและลายเซ็น
Keith

คำตอบ:


10

ความคิดเห็นเอกสาร XML มีไว้สำหรับสมาชิกสาธารณะ

คอมไพเลอร์เตือนอย่างชัดเจนนี้:

ไม่มีความคิดเห็น XML สำหรับประเภทที่เปิดเผยต่อสาธารณะหรือสมาชิก 'Type_or_Member'

คุณควรเพิ่มความคิดเห็น XML ให้กับสมาชิกส่วนตัวเท่านั้นหากสมาชิกเหล่านั้นยังไม่ชัดเจนจากชื่อของพวกเขา


6

ความคิดเห็นที่บริสุทธิ์ที่นี่ดังนั้นลองคิดในสิ่งที่คุ้มค่า

ฉันเกลียดความคิดเห็น XML ที่ไม่จำเป็น เพิ่มทวีคูณสำหรับสไตล์ผี doc ที่เพิ่มช่องว่างให้กับชื่อเมธอด / คุณสมบัติ มันไม่เพิ่มมูลค่าใด ๆ และเพียงแค่ทำให้มุมมองโค้ดที่แท้จริง

หากสิ่งที่ต้องการความกระจ่างโดยทั้งหมดแสดงความคิดเห็น อย่างไรก็ตามความชัดเจนจำนวนมากสามารถถ่ายทอดโดยวิธีการโฟกัสขนาดเล็กที่มีชื่อที่มีความหมาย อย่าแสดงความคิดเห็นรหัสถ้าคุณสามารถปรับปรุงและทำให้ความคิดเห็นที่ไม่จำเป็น

อย่าแม้แต่จะรับฉันเริ่มต้นกับการใช้งานที่ไม่จำเป็นของและthis.Me.

ในฐานะที่เป็นข้อความด้านข้างฉันชอบที่จะมีส่วนเสริมของ Visual Studio ที่ให้ฉันสลับการแสดงความคิดเห็นของ xml (คำใบ้คำใบ้)


ฉันเดาว่าthis.สิ่งนี้อาจเริ่มต้นขึ้นเพราะเหตุผลบางประการที่แนวทางของทางการของ Microsoft แนะนำให้ใช้แบบแผนการตั้งชื่อแบบเดียวกันสำหรับตัวแปรท้องถิ่นและprivateตัวแปรอินสแตนซ์ นั่นคือรูปแบบที่มีข้อบกพร่องอย่างยิ่งยวด IMO - ในบางกรณีคุณมีนิ้วอ้วนเพียงนิ้วเดียวจากStackOverflowExceptionคุณสมบัติ in setหรือMyProperty = MyProperty;ทำให้ฟิลด์เริ่มต้นเป็นศูนย์แทนที่จะเป็นพารามิเตอร์คอนสตรัคเตอร์และแม้แต่ Microsoft ยังคงใช้งานm_ภายในเป็นส่วนใหญ่ .
jrh

2

ในเอกสาร XML สมาชิกสาธารณะควรมีความละเอียดและสมบูรณ์ตามที่ @SLaks ได้กล่าวถึง

อย่างไรก็ตามพวกเขาสามารถเป็นประโยชน์กับสมาชิกส่วนตัวที่ได้รับการปกป้องหรือภายในเช่นกันเพราะ Visual Studio จะเติมค่า Intellisense และช่วยแนะนำเคล็ดลับเครื่องมือด้วยความคิดเห็น XML doc

ซึ่งหมายความว่า:

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

อาจเป็นเอกสารเพียงพออย่างสมบูรณ์แบบ แต่:

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

จะเห็นได้ง่ายขึ้นจากที่อื่น ๆ ในรหัสของคุณ

โดยทั่วไปเกี่ยวกับความคิดเห็น XML สาธารณะฉันเขียนสำหรับผู้ใช้ภายนอกของ API และความคิดเห็น XML ภายในฉันเขียนถึงฉันหรือคนอื่น ๆ ในทีมของฉัน

คำอธิบายพารามิเตอร์การข้ามอาจเป็นความคิดที่ไม่ดีสำหรับอดีตและไม่เป็นผลดีสำหรับภายหลัง

ฉันจะเพิ่ม (ในเอกสาร API สาธารณะโดยเฉพาะ) รวมถึงคุณสมบัติgetหรือไม่set:

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

ไม่ชัดเจนจาก Intellisense ของ C # ว่ามีgetหรือsetไม่มี แต่การใส่ไว้ในความคิดเห็น XML จะหมายความว่าคุณสามารถบอกได้ทันทีจากคำแนะนำเครื่องมือ


ขึ้นอยู่กับ ถ้าคุณมีpublic getแต่internal setเป็นทรัพย์สิน? คุณแสดงความคิดเห็นได้อย่างไร :-)
Guillaume

1
@Gillailla เนื่องจากความคิดเห็นของ XML เป็นแบบสาธารณะฉันจะไปกับเอกสารgetใน XML และบันทึกความคิดเห็นsetปกติ //
Keith
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.