แบบแผนการใช้อักษรตัวพิมพ์ใหญ่สำหรับฟิลด์ที่มีการป้องกัน C #


17

การใช้อักษรตัวพิมพ์ใหญ่สำหรับชื่อฟิลด์ที่ได้รับการป้องกันใน C # คืออะไร

มัน _myVar (เช่นฟิลด์ส่วนตัว) หรือ MyVar (ชอบคุณสมบัติ) หรือไม่


3
คุณแน่ใจหรือไม่ว่าต้องการปกป้องฟิลด์ทั้งหมด เหตุผลส่วนใหญ่ที่ไม่มีเขตข้อมูลสาธารณะนำไปใช้กับเขตข้อมูลที่ได้รับการป้องกันด้วยดังนั้นฉันคิดว่าควรใช้คุณสมบัติที่มีการป้องกันแทนดีกว่า
svick

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

2
คุณแน่ใจหรือว่า _myVar เป็นแบบแผนที่เหมาะสมสำหรับฟิลด์ส่วนตัว (คุณกำลังสร้างหลักฐานว่าเป็น) ไม่พยายามเริ่มสงครามศาสนาที่นี่เพียงแค่พยายามบอกว่าถ้าคุณเลือกกฎบางอย่างสำหรับเขตข้อมูลส่วนตัวคุณสามารถเลือกกฎอื่นสำหรับเขตข้อมูลที่มีการป้องกันของคุณ คำแนะนำเดียวคือให้สอดคล้อง
Marek

คำตอบ:


13

มีบางอย่างที่เรียกว่าแนวทางการออกแบบสำหรับการพัฒนา Class Libraryที่เขียนโดย Microsoft

มันบอกว่าต่อไปนี้:

อย่าให้ฟิลด์อินสแตนซ์ที่เป็นสาธารณะหรือได้รับการป้องกัน

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

เช่นเดียวกับ:

  • ใช้ปลอกปาสคาลในชื่อฟิลด์

  • อย่าใช้คำนำหน้าสำหรับชื่อฟิลด์ ตัวอย่างเช่นอย่าใช้ g_ หรือ s_ เพื่อแยกแยะสแตติกและฟิลด์ที่ไม่คงที่

สำหรับ_คำนำหน้ามันใช้บ่อยเท่าที่มีการthis.ประชุม (เท่าที่ฉันเคยเห็นซอร์สโค้ดเรียกดูใน CodePlex / GitHub) ตัวอย่างเช่น ReSharper ส่งเสริม_การตรวจสอบการตั้งชื่อ


คุณได้รับการคัดเลือกเล็กน้อยในการไม่รวม "อย่าใช้คำนำหน้าสำหรับชื่อฟิลด์" จาก MSDN ข้างกฎ Pascal ปลอก :) ในขณะที่เป็นจริงที่ resharper ตามค่าเริ่มต้นส่งเสริม _ คำนำหน้าถ้าคุณกำลังอ้างถึงการประชุม MSDN IMHO คุณไม่ควรผสมกับการแสดงผลของคุณเอง
Marek

2
มันหมายความว่า "ทำเวอร์ชั่นไม่ดี"? คุณกำลังบอกว่าเนื่องจากไม่แนะนำฟิลด์ที่มีการป้องกันจึงไม่มีคำแนะนำเกี่ยวกับชื่อของมัน อย่างไรก็ตาม Resharper ดูเหมือนจะแนะนำMyVar
Louis Rhys

2
@Marek: ฉันได้รวมการตั้งค่าของตัวเอง ฉันเพียงแค่ระบุสิ่งที่ Resharper ต้องการ และมันก็ไม่ใช่ความตั้งใจของฉันที่จะเลือก อัปเดตคำตอบแล้ว
jgauffin

1
@jgauffin นอกเหนือจากผู้บริโภคที่ใช้การสะท้อนกับรหัสของคุณไม่เปลี่ยนเขตข้อมูลเป็นคุณสมบัติที่โปร่งใสสำหรับผู้โทรหรือไม่ การเปลี่ยนเขตข้อมูลที่มีการป้องกันเป็นคุณสมบัติที่มีการป้องกันความเข้ากันได้ของการแบ่งชื่อเดียวกัน
Quantic

1
มันหยุดความเข้ากันได้ของไบนารี: msdn.microsoft.com/en-us/library/ta31s3bc(v=vs.71).aspx
jgauffin
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.