แนวปฏิบัติที่ดีที่สุดในปัจจุบันที่ได้รับการยอมรับเกี่ยวกับคำสำคัญ“ นี้” ที่อยู่หน้าฟิลด์และวิธีการใน c # คืออะไร


14

หากไม่จำเป็นต้องแยกแยะความแตกต่างระหว่างตัวแปรและฟิลด์ด้วยชื่อเดียวกันฉันไม่เคยใส่this.หน้าฟิลด์หรือการเข้าถึงสมาชิกใด ๆ ใน C # ฉันเห็นว่านี่ไม่ต่างจากm_คำนำหน้าซึ่งเคยเป็นเรื่องปกติใน C ++ และคิดว่าถ้าคุณต้องการระบุว่าเป็นสมาชิกคลาสของคุณใหญ่เกินไป

อย่างไรก็ตามมีคนจำนวนมากในสำนักงานของฉันที่ไม่เห็นด้วยอย่างยิ่ง

สิ่งที่ถือว่าเป็นแนวทางปฏิบัติที่ดีที่สุดในปัจจุบันเกี่ยวกับthis.อะไร?

แก้ไข: เพื่อชี้แจงฉันไม่เคยใช้m_และใช้เฉพาะthis.เมื่อจำเป็นจริงๆ


อะไรคือสิ่งที่m_ควรจะหมายความว่าอย่างไร
FrustratedWithFormsDesigner

2
@Frustrated นั่นคือตัวแปรเป็นสมาชิกของคลาส
Michael ทอดด์

ขออภัยฉันตั้งสมมติฐานว่าอาจไม่มีใครคิดว่าฉันใช้รูปแบบฮังการี ฉันพยายามพูดว่าฉันคิดว่าthis.เกือบจะไม่ดีเท่า m_
Andy Lowry

3
เพื่อนเพียงแค่ติดตั้งและเรียกใช้ StyleCop! นี่ก็เป็นคำถามของ SO เช่นกัน
งาน

3
การยอมรับหรือไม่เห็นด้วยกับทีมของคุณนั้นไม่คำนึงถึงเรื่องใดคุณยังต้องมีความมั่นคงในทีม โดยเฉพาะอย่างยิ่งทีมที่มีขนาดใหญ่ขึ้นมิฉะนั้นแล้วมันจะทำให้คุณรู้สึกทึกทักไปหมดเหมือนตะวันตก ;-)
Chris

คำตอบ:


14

ตามแนวทางการออกแบบ Frameworkเมื่ออ้างถึงฟิลด์สาธารณะหรือที่ได้รับการป้องกัน:

ห้ามใช้ส่วนนำหน้าสำหรับชื่อฟิลด์

ตัวอย่างเช่นm_เป็นคำนำหน้า

ดังนั้นการเปิดเผยข้อมูลสาธารณะของฟิลด์จะให้ประโยชน์กับการใช้thisคำหลักตามที่อธิบายใน MSDN

หากต้องการรับรองสมาชิกที่ถูกซ่อนโดยชื่อที่คล้ายกันตัวอย่างเช่น: คัดลอก

public Employee(string name, string alias) 
{
   this.name = name;
   this.alias = alias;
}

เมื่ออ้างถึงเขตข้อมูลส่วนตัวคุณสามารถใช้m_ถ้าคุณต้องการ แต่สำหรับฟิลด์สาธารณะฉันแนะนำให้ทำตามแนวทางปฏิบัติที่ดีที่สุด

โดยส่วนตัวฉันไม่ชอบขีดเส้นใต้ในชื่อตัวแปรของฉัน ฉันยังพยายามที่จะสอดคล้อง ดังนั้นthis.name = name;เป็นกฎง่ายๆในการทำงานในสถานการณ์สาธารณะ / ส่วนตัว


+1: นี่คือสิ่งที่ฉันหมายถึงในคำตอบของฉัน แต่คำตอบของคุณมีความหมายมากขึ้น
Joel Etherton

1
เห็นด้วย - ฉันเคยเห็นหลายสถานการณ์ที่คุณมีพร็อพเพอร์ตี้สมาชิกและตัวแปรโลคัลทั้งหมดที่มีชื่อเดียวกัน สถานที่ให้บริการคือ Pascal (อักษรตัวใหญ่ตัวใหญ่) ทำให้คุณมีสองตัวแปรที่อูฐใส่ซอง (ตัวอักษรตัวแรกที่ต่ำกว่า) วิธีเดียวที่จะแยกความแตกต่างได้ด้วย "สิ่งนี้" (แนะนำ) หรือคำนำหน้า (ไม่แนะนำ) ฉันใช้ทั้งในและในทางปฏิบัติแล้วคำหลักนี้ทำให้ง่ายต่อการติดตาม (IMO)
Mayo

1
สิ่งที่ตลกพร้อมคำแนะนำกรอบคือแหล่ง CLR เกลื่อนไปด้วยm_คำนำหน้า ฉันคิดว่า '_' เป็นคำนำหน้าดีเพราะคุณไม่ต้องกังวลกับปัญหา stackoverflow จากการพิมพ์ที่ได้รับมอบหมาย
Chris S

@Chris S - จากประสบการณ์ของฉัน Microsoft ทำได้ดีด้วยการจัดทำเอกสารและการบำรุงรักษา "กระบวนการรหัสวิวัฒนาการ" พวกเขาใช้วิธีปฏิบัติหลายอย่างซึ่งตอนนี้ถือว่าเป็น เป็นไปได้มากเพราะพวกเขาเรียนรู้จากความผิดพลาดของพวกเขา นี่ไม่ได้หมายความว่าพวกเขากลับไปและเปลี่ยนรหัสที่มีอยู่เพราะมันไม่คุ้มค่ากับความพยายามเสมอไป เพียงแค่ทำตามคำแนะนำล่าสุดในรหัสแอปพลิเคชันใหม่ที่ไม่ใช่แบบดั้งเดิม
P.Brian.Mackey

11

ในทีมของเราเราได้นำมาตรฐานการใช้งานthis.หรือตัวระบุMe.ออบเจ็กต์ในคลาสที่ใหญ่กว่ามาใช้เพื่อช่วยให้นักพัฒนารุ่นเยาว์สามารถแยกแยะขอบเขตที่แน่นอน / ทันทีของตัวแปรได้อย่างง่ายดายยิ่งขึ้นเพียงแค่มองดู

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


จุดที่ดีเกี่ยวกับตัวแปลงสัญญาณจูเนียร์
Patrick Hughes

2
ชั้นเรียนของคุณไม่ควรเล็กลงหรือ? หรือนี่คือปัญหาดั้งเดิม
Tjaart

@Tjaart: คลาสมีขนาดใหญ่หรือเล็กตามที่ต้องการ แม้ในชั้นเรียนขนาดเล็กก็สามารถลืมขอบเขตของตัวแปรได้ง่ายเช่นเดียวกับที่ปรากฏบนหน้าจอ
Joel Etherton

1
ทำไมรุ่นน้องของคุณถึงมีปัญหา @JoelEtherton? Python รุ่นน้องมีปัญหาตรงข้ามที่พวกเขาลืมเพิ่มตนเอง เพื่อเข้าถึงตัวแปรส่วนตัว จูเนียร์ไม่เพียงแค่ลืมและทำให้การประชุมยุ่งเหยิงใช่หรือไม่
Tjaart

1
@Tjaart: บางครั้ง พวกเขามีปัญหาเพราะพวกเขาเป็นรุ่นน้องและบางครั้งพวกเขาก็ไม่สนใจหรือยังไม่ได้รับการฝึกฝน เราใช้เทคนิคนี้เป็นป้ายบอกทางมากกว่ามาตรฐานหรือแบบแผน แท้จริงแล้วมันถูกเลิกใช้งานที่นี่ตั้งแต่โพสต์นี้ตอนนี้ว่ารุ่นน้องของเราทุกคนเริ่มคุ้นเคยกับสภาพแวดล้อม ฉันคิดว่าถ้าเราจ้างคนรุ่นใหม่ (ไม่น่าจะเกิดขึ้นเร็ว ๆ นี้) มันอาจกลับมา
Joel Etherton

10

StyleCop จะบังคับใช้การใช้งานthis.ดังนั้นหากคุณเห็นว่าเป็นแนวปฏิบัติที่ดีที่สุด (ซึ่งฉันทำ) การใช้งานนั้นก็this.เป็นแนวปฏิบัติที่ดีที่สุด

สไตล์ที่คุณนำมาใช้นั้นขึ้นอยู่กับคุณและมาตรฐานการเข้ารหัสของคุณเอง "ดีที่สุด" คือสิ่งที่คุณกำหนดให้เป็น เพียงแค่ให้สอดคล้อง การใช้มันอย่างไม่ลงรอยกันนำไปสู่ความสับสน

เหตุผลของฉันคือการใช้การthis.โทรออกความจริงที่ว่าคุณกำลังอ้างอิงคุณสมบัติของอินสแตนซ์ตัวอย่างเช่นมันช่วยเน้นความจริงที่ว่าคุณกำลังกลายพันธุ์พวกเขา (ถ้าคุณมีthis.x = ...) ซึ่งเป็นสิ่งที่คุณอาจต้องการทราบ นอกจากนี้ยังเน้นความจริงที่ว่าเมื่อใดก็ตามที่คุณเห็นthis.วิธีการของคุณจะไม่คงที่ การใช้การประชุมบางอย่างเช่นm_นี้ก็จะทำเช่นนี้ แต่มันก็เป็นความพยายามแบบแมนนวลถ้าคุณสร้างm_เป็น static หรือ refactor หรือวิธีการบางอย่างเพื่อส่งผ่านค่าจากนอกห้องเรียนแล้วคุณต้องจำไว้ว่าให้เปลี่ยนชื่อถ้าคุณใช้thisคอมไพเลอร์จะบังคับให้คุณทำการเปลี่ยนแปลง

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


9
และ Resharper จะแนะนำให้นำ "สิ่งนี้ออก" ไมล์สะสมของคุณอาจแตกต่างกันไป
Carra

ใช่มั้ย? Resharper ไม่เคยแนะนำให้ฉัน อาจเป็นเพราะฉันมีปลั๊กอิน StyleCop?
Jesse C. Slicer

1
ถูกต้องการติดตั้ง StyleCop จะปิดตัวเลือกนั้นใน R #
สตีฟ

5

หนึ่งในสิ่งที่ดีเกี่ยวกับการใช้m_คือทันทีที่คุณพิมพ์mintellisense เล็กน้อยจะให้รายการตัวแปรส่วนตัวทั้งหมดของคุณฉันคิดว่านั่นเป็นข้อดี ฉันจะไปs_เพื่อสถิตยศาสตร์ส่วนตัวและc_ค่าคงที่เอกชนด้วยเหตุผลที่คล้ายกัน มันเป็นสัญกรณ์ฮังการี แต่ในความหมายมันเป็นความหมายเพราะมันเพิ่มความหมายที่มีประโยชน์กับชื่อตัวแปรเพื่อให้โปรแกรมเมอร์คนอื่น ๆ สามารถบอกสิ่งต่าง ๆ เกี่ยวกับมันจากชื่อของมันที่อาจไม่ชัดเจนโดยสิ้นเชิง

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


4
หรือพิมพ์this.และปล่อยให้ระบบ IntelliSense ช่วยคุณได้
Steve

1
@ Steve Haigh: คุณไม่มีจุดเขาบอกว่าเขาจะจัดกลุ่มสมาชิกทุกประเภทด้วยกันเนื่องจากรายการเรียงตามลำดับตัวอักษร m_ ทั้งหมดปรากฏขึ้นพร้อมกัน s_ ทั้งหมดเข้าด้วยกัน
gbjbaanb

2
การใช้this.จะให้ทุกสิ่งในชั้นเรียนโดยไม่จำเป็นต้องหันไปใช้ข้อตกลงการตั้งชื่อที่ล้าสมัย ฉันเข้าใจประเด็นของตัวอักษรที่แตกต่างกันฉันไม่คิดว่าพวกเขาจำเป็น หากคุณมีคุณสมบัติจำนวนมากค่าคงที่และอื่น ๆ ในคลาสเดียวที่คุณต้องการแบบแผนนี้จากนั้นคุณออกแบบจะแตกหักสวยมาก
Steve

2
@ Steve Haigh: มันยอดเยี่ยมในโลกแห่งทฤษฎีที่ทุกคนในทีมเป็นโปรแกรมเมอร์ที่ยอดเยี่ยมและพวกเขาก็แบ่งชั้นเรียนของพวกเขาออกเป็นชิ้นเล็ก ๆ ที่ถูกกัดและ refactor ได้ดีและมีเวลาคิดเกี่ยวกับการออกแบบ ฯลฯ ... ในประสบการณ์ชีวิตของฉัน ค่อนข้าง qhite ออกเช่นนั้น แต่ฉันเห็นด้วยในโลกอุดมคติที่คุณพูดถูก

@Steve: การพิมพ์m_จะให้รายการตัวแปรทั้งหมดแก่สมาชิก การพิมพ์this.จะให้รายการตัวแปรสมาชิกและฟังก์ชั่นสมาชิกแก่ฉัน
Sean

4

thisชัดเจน มันเป็นสัญญาณแสงที่คุณไม่ควรพลาด

ฉันมักจะชอบรหัสที่ชัดเจนมากกว่ารหัสโดยนัย นั่นเป็นเหตุผลที่ฉันใช้thisบ่อยๆ ฉันคิดว่ามันเป็นแนวปฏิบัติที่ดีที่สุด


4

ฉันมักจะใช้ "สิ่งนี้" การให้เหตุผลขึ้นอยู่กับข้อเท็จจริงง่ายๆสองประการ:

  • รหัสการอ่านยากกว่าการเขียนรหัส
  • คุณอ่านรหัสบ่อยกว่าที่คุณเขียนรหัส

การใช้ "สิ่งนี้" ทำให้มันชัดเจนสำหรับทุกคนที่อ่าน (เช่นไม่ใช่แค่ผู้เขียน แต่อาจรวมถึงผู้เขียนในเวลา 6 เดือนหลังจากการดำเนินการเฉพาะถูกลืมไปแล้ว) ว่าใช่นี่เป็นสมาชิกชั้นเรียนของเรา ' กำลังพูดถึงที่นี่ "m_" และสิ่งที่คล้ายกันเป็นเพียงแค่การประชุมและเช่นเดียวกับการประชุมอื่น ๆ ที่สามารถนำไปใช้ในทางที่ผิด (หรือไม่ได้ใช้เลย) - ไม่มีอะไรที่จะบังคับใช้ "m _" / ฯลฯ ในเวลารวบรวมหรือเวลาทำงาน "this" is strong: คุณสามารถวาง "m_" บนตัวแปรโลคัลและคอมไพเลอร์จะไม่บ่น คุณไม่สามารถทำได้ด้วย "สิ่งนี้"

หากมีสิ่งใดที่ฉันคิดว่ามันน่าเสียดายที่การใช้ "นี่" ไม่ได้บังคับให้ใช้กับข้อกำหนดทางภาษา

เป็นโบนัสที่ดีเมื่อทำการดีบั๊กคุณสามารถเลื่อนเมาส์ไปที่ (หรือเพิ่มการเฝ้าดู) "สิ่งนี้" และรับการตรวจสอบจากสมาชิกชั้นเรียนอื่น ๆ ทั้งหมด - ข้อมูลที่มีค่า


3

thisคำหลักที่ถูกนำมาใช้โดยเฉพาะอย่างยิ่งที่จะแยกแยะ 2 ตัวแปรที่มีอยู่โดยเฉพาะอย่างยิ่งเมื่อทำคุณมีคอนสตรัคหรือวิธีการที่มีตัวแปรที่มีชื่อเดียวกัน แต่สามารถมีชนิดเดียวกัน

ตัวอย่าง:

public class Example {

    string reason;
    string cause;

    Example (string reason, string cause) {
        this.reason = reason;
        this.cause = cause;
    }

    //<Setter> if you want to explicitly write your onw
    public void setReason(stirng reason) {
        this.reason = reason;
    }
}

(เช่นthis.reason = reason) นี้โดยทั่วไปจะกำหนดค่าจากพารามิเตอร์ให้กับตัวแปรในชั้นเรียน thisโดยทั่วไปจะใช้คลาสreasonจากบล็อกพารามิเตอร์


2

ฉันยังสงสัยเกี่ยวกับเรื่องนี้อยู่พักหนึ่ง หลังจากเขียนโค้ดอย่างกว้างขวางใน javascript ฉันพบว่าตัวเองใช้this.บ่อยในรหัส c # ของฉัน (ก่อนหน้านั้นฉันเคยใช้มันเกือบจะสุดขั้วในตัวสร้างหรือวิธีการที่คล้ายกันเพื่อหลีกเลี่ยงความคลุมเครือ) มันทำให้รหัสชัดเจนขึ้นเล็กน้อยสำหรับความพยายามเพิ่มเติมเล็กน้อยนอกจากนี้คุณไม่ต้องปิดท้ายชื่อสมาชิกในชั้นเรียนด้วยคำนำหน้าและยังสามารถเปลี่ยนกลับไปใช้ 'ทางลัด' ของสมาชิกเมื่อบริบทชัดเจนหรือโดยเฉพาะอย่างยิ่งในบริบทที่ซับซ้อน ฉันเพิ่งเพิ่มthis.เมื่อฉันมีวิธีการที่นานกว่ารายการอาร์กิวเมนต์ที่ยาวขึ้นหรือตัวแปรท้องถิ่นจำนวนมากที่ประกาศและฉันคิดว่ารหัสอาจได้กำไรจากความชัดเจนเพิ่มเติมบางอย่างแม้ว่าจะถูกบังคับก็ตาม

แต่โดยส่วนตัวแล้วฉันเกลียดm_สไตล์คำนำหน้าไม่ใช่อย่างมากเนื่องจากชาวฮังการี แต่เนื่องจากขีดเส้นใต้เป็นความเจ็บปวดในการพิมพ์;) ดังนั้นฉันจึงไม่คิดว่าจะเป็นทางเลือก ฉันจะยอมรับว่ามันมีจุดแข็งเมื่อพูดถึงระบบทางปัญญาอย่างไรก็ตามคุณสามารถยืนยันได้อีกครั้งว่าถ้าคุณจำตัวอักษรไม่กี่ตัวแรกของตัวแปรสมาชิกได้คลาสของคุณจะใหญ่


1

ฉัน prever คำนำหน้าขีดเดียวสำหรับสมาชิกชั้นเรียน _someVar;

ทำไม? คุณรู้ตั้งแต่แรกว่ามันเป็นสมาชิกไม่ใช่ตัวแปรสแต็ก สะดวกเพียงแค่มองผ่าน และใช้เวลาน้อยลงเมื่อเทียบกับคำหลัก "นี้"


1

การใช้สิ่งต่าง ๆ เช่นthis.คำนำหน้า / คำหลักที่ไม่จำเป็นหรือไม่เปลี่ยนผลลัพธ์มักเป็นเรื่องส่วนตัว อย่างไรก็ตามฉันคิดว่าเราสามารถยอมรับได้ว่าพวกเราส่วนใหญ่ต้องการแยกความแตกต่างจากตัวแปรท้องถิ่น บางคนใช้คำนำหน้าขีดล่าง (ซึ่งฉันพบว่าน่าเกลียดและเป็นรูปแบบของฮังการี) ส่วนคนอื่นใช้this.คำหลัก ฉันเป็นหนึ่งในหลัง มันคือทั้งหมดที่เกี่ยวกับการอ่านและความเข้าใจ ฉันไม่เคยสนใจการพิมพ์พิเศษเล็กน้อยหากมันชัดเจนหรืออ่านง่ายขึ้น ฉันต้องการแยกความแตกต่างของเขตข้อมูลและตัวแปรในพริบตา

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

public Person(string firstName)
{
    this.firstName = firstName;
}

คุณสมบัติของฉันจึงมีลักษณะเช่นนี้ (ใช่ฉันมักจะใส่เขตข้อมูลด้วยคุณสมบัติและไม่ได้อยู่ที่ด้านบนของไฟล์ของฉัน):

private string firstName;
public string FirstName
{
    get { return this.firstName; }
}

อ่านแล้ว: ส่งคืนชื่อนี้


-2

แก้ไข: คำตอบของฉันไม่ชัดเจนคำตอบ ดังนั้นนี่คือการแก้ไข สถานะแนวทางการเข้ารหัสของ Microsoft:

2.6 การตั้งชื่อ

อย่าใช้คำนำหน้าสำหรับตัวแปรสมาชิก ( , m , s_, ฯลฯ ) หากคุณต้องการแยกแยะ> ระหว่างตัวแปรโลคอลและสมาชิกคุณควรใช้“ นี่” ใน C # และ“ Me” ใน VB.NET

สามารถพบได้ที่: http://blogs.msdn.com/b/brada/archive/2005/01/26/361363.aspx

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

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

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

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


1
-1 แทนที่จะตอบคำถามคุณแค่ให้ความเห็นซึ่งไม่สะท้อนวิธีปฏิบัติที่ดีที่สุด
Arseni Mourzenko

ดังนั้นตามสไตล์การใช้งานแบบนี้ เป็นการปฏิบัติที่ดีที่สุด @MainMa ฉันไม่เห็นด้วยอย่างยิ่ง ฉันจะแก้ไขคำตอบเพื่อทราบว่า
Tjaart

@MainMa ดีขึ้นหรือไม่ คำตอบอื่น ๆ อีกมากมายให้ความเห็นเท่านั้น แต่ไม่ได้ถูกลดระดับลง แนวปฏิบัติที่ดีที่สุดคืออะไรและพบได้ที่ไหน
Tjaart

-3

นี้. มักจะนำไปสู่เสียงที่ไม่พึงประสงค์

นี่คือทางออกของฉัน:

  • parameter_names_
  • local_variables
  • ANY_CONSTANT
  • _private_members
  • NonPrivateProperties
  • _NonPrivateProperty // Backer
  • privateProperty
  • _privateProperty // backer

2
นี่เป็นสิ่งที่ขัดแย้งกับสไตล์. Net ทั่วไปมาก อูฐและปาสคาลปลอกตลอดทาง วิธีการของคุณค่อนข้างไม่สอดคล้องกัน นอกจากนี้ยังเป็นกฎแบบเก่าที่ใช้ในการพิมพ์ค่าคงที่และแบบที่ไม่ได้ใช้ในชุมชน. Net ทั่วไป
Tjaart

ฉันหวังว่าคุณจะแสดงความคิดเห็นที่ด้านบนของแต่ละไฟล์ที่อธิบายถึงรูปแบบสำหรับการฝึกหัด ... ;-)
JaySeeAre

ฉันไม่เข้าใจว่าคุณคิดอย่างไรเพิ่มสิ่งนี้ จะสร้างเสียงรบกวน แต่สิ่งที่พูดไม่ได้ทั้งหมด
Travis Weston
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.