หลักการตั้งชื่อของตัวแปรในภาษาการเขียนโปรแกรม C # [ปิด]


10

ฉันกำลังดูวิดีโอเกี่ยวกับ C # เกี่ยวกับตัวแปร ผู้เขียนประกาศตัวแปรภายในเมธอดและเขาตั้งชื่อดังนี้: string MyName = "James";

คำถามของฉันคือ:. อนุสัญญาใดแนะนำโดย. Net Framework มันเป็นปาสคาลท่อในตัวอย่างข้างต้นหรือเป็นกรณีอูฐ?


ปัญหาของคำถามนี้ซึ่งคุณไม่รู้ก็ไม่ใช่ความผิดของคุณนั่นก็คือในความเป็นจริงแล้วมันไม่มีระเบียบแบบบัญญัติสำหรับ C # มีการประชุมสามัญ น่าเสียดายที่มากกว่าหนึ่ง แต่มันจะยากสำหรับคุณที่จะได้รับคำตอบที่นี่นั่นคืออะไร แต่ความเห็นที่บริสุทธิ์ ขออภัยการลงคะแนนปิด คำแนะนำของฉัน: ใช้เวลาในการอ่านโค้ดในแหล่งรวบรวมความรู้ที่ได้รับความนิยมและ codeplex เพื่อดูว่าพวกเขาใช้การประชุมแบบไหนในฐานะคนที่เขียนคนที่ได้รับความนิยมส่วนใหญ่เป็นคนที่มีประสบการณ์ในอุตสาหกรรม
จิมมี่ฮอฟฟา

5
แบบแผนการตั้งชื่อจาก MSDN - msdn.microsoft.com/en-us/library/xzf533w0(v=vs.71).aspx
Yusubov

1
@Yusubov สิ่งเหล่านี้อธิบายการตั้งชื่อส่วนสาธารณะของไลบรารีไม่ใช่ตัวแปรเฉพาะที่
svick

คำตอบ:


26

ฉันไม่คิดว่าจะมีอะไรที่เหมือนกับการประชุม 'เป็นทางการ' เท่าที่ฉันรู้ต่อไปนี้ถือว่าเป็นแนวปฏิบัติที่ดีโดยนักพัฒนา C # ที่มีประสบการณ์มากมาย:

PascalCase for public member variables (string MyName = "James")

camelCase for local variables (string myName = "James")

_leadingUnderscore for private member variables (string _myName = "James")

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

เช่นเดียวกับระเบียบการเข้ารหัสใด ๆ นี่ก็ขึ้นอยู่กับความชอบส่วนตัว ดังนั้นจึงไม่มีคำตอบที่แน่นอน เป้าหมายทั่วไปควรเก็บรหัสนั้นให้อ่านได้และเข้าใจได้มากที่สุด


3
+1 นี่ใกล้เคียงกับสไตล์ที่ฉันเคยเห็น ฉันเชื่อว่ามันมาจากรูปแบบที่ใช้ในตัวอย่างของ MSDN ฉันมักจะดูคุณสมบัติได้รับPascalCaseชาวบ้านที่ได้รับและสมาชิกภาคเอกชนที่ได้รับcamelCase _leadingUnderscore
KChaloux

คุณหมายถึง Fields หรือ Properties เมื่อคุณพูดถึงตัวแปรสมาชิก?
Kaser

Delphi นักพัฒนามีแนวโน้มที่จะชื่อฟังก์ชัน / วิธีพารามิเตอร์โดย prefixing พวกเขาด้วย (aParameter: string)'a': ฉันรู้ว่าพารามิเตอร์เป็นตัวแปรท้องถิ่นโดยเฉพาะอย่างยิ่งเมื่อส่งผ่านตามค่า แต่มักจะมีประโยชน์มากในการ "เห็น" ว่า var ถูกส่งผ่านเป็นพารามิเตอร์ มีอนุสัญญาดังกล่าวใน C # หรือไม่
Marjan Venema

และอีกหนึ่ง: เขตข้อมูลสมาชิก Delphians นำหน้าด้วย 'F' ฉันได้เห็น # รหัส C private string _SomeStringที่บอกพวกเขาด้วยการขีดเส้นใต้: คุณจะบอกว่าเป็นแบบแผนหรือไม่? (เพียงจุ่มนิ้วเท้าของฉันใน C # และสงสัยเกี่ยวกับสิ่งนี้)
Marjan Venema

1
สิ่งนี้ไม่ถูกต้อง มีแบบแผนการตั้งชื่อที่เผยแพร่สำหรับสมาชิกสาธารณะ (และชั้นเรียนสาธารณะเป็นต้น)
svick

7

อนุสัญญาการตั้งชื่อกรอบ. Net ( v4.5 , v1.1 ) นั้นไม่เชื่อเรื่องพระเจ้า พวกเขาไม่ได้ระบุมาตรฐานสำหรับการตั้งชื่อตัวแปรท้องถิ่น คุณจะต้องตัดสินใจเกี่ยวกับการประชุมของคุณเองสำหรับการตั้งชื่อเหล่านี้

ฉันใช้ camelCase เป็นการส่วนตัวและยกเลิกการเปลี่ยนแปลงตัวแปรสมาชิกจากชื่อพารามิเตอร์thisเมื่อจำเป็น แต่ขีดล่างชั้นนำ (เช่น_memberVariable) ก็ใช้ได้เช่นกัน


1
นี่คือเหตุผลของการใช้หลักการตั้งชื่อโดยใช้thisเพื่อแยกความแตกต่างของตัวแปรท้องถิ่นจากฟิลด์ / คุณสมบัติ 5 ตัวอักษรเพิ่มเติมทุกครั้งที่ imho มากเกินไป
Sinatr
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.