ลำดับของรายการในคลาส: ฟิลด์คุณสมบัติตัวสร้างวิธีการ


637

มีแนวทาง C # อย่างเป็นทางการสำหรับการสั่งซื้อสินค้าในแง่ของโครงสร้างชั้นเรียนหรือไม่?

มันไป:

  • ทุ่งสาธารณะ
  • ฟิลด์ส่วนตัว
  • คุณสมบัติ
  • ก่อสร้าง
  • วิธีการ
    ?

ฉันอยากรู้ว่ามีกฎอย่างหนักและรวดเร็วเกี่ยวกับลำดับของรายการหรือไม่ ฉันใจดีทุกที่ ฉันต้องการติดกับมาตรฐานเฉพาะเพื่อให้ฉันสามารถทำมันได้ทุกที่

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

เคล็ดลับ / ข้อเสนอแนะ?


7
ที่จริงแล้วเพื่อตอบคำถามจริงไม่ใช่ไม่มีแนวทางอย่างเป็นทางการ StyleCop ใช้แนวทางที่พัฒนาขึ้นเพื่อใช้ภายในกลุ่มใดกลุ่มหนึ่งใน Microsoft นี่ไม่ใช่แนวทางที่เป็นทางการและอาจไม่สม่ำเสมอในกลุ่มต่างๆใน Microsoft
John Saunders

2
เคล็ดลับง่ายๆอย่างหนึ่งคือการดูข้อมูลเมตาของคลาสที่ซับซ้อนใน. net (F12 ใน VS) คุณจะได้รู้ว่ามันสั่งอย่างน้อยสำหรับสมาชิกpublicและ protected
nawfal

19
คำถามนี้ไม่ได้อิงตามความคิดเห็นเพราะจะถามว่ามีแนวทางปฏิบัติราชการหรือไม่ อาจมีแนวทางหรือไม่มี!
Simon MᶜKenzie

2
@nawfal ฉันรู้ว่านี่เป็นความคิดเห็นเก่าฉันชอบเคล็ดลับที่คุณพูดถึง แต่มันก็คุ้มค่าที่จะกล่าวถึงว่ามันจะไม่แสดงprivateหรือinternalสมาชิก (ฉันเชื่อว่า) วิธีที่ดีในการดูpublicและprotectedอย่างไรก็ตาม เราสามารถดูแหล่งที่มาของคลาส. NET Framework ได้ที่นี่referenceource.microsoft.comเช่นกัน
Adam Plocher

คำตอบ:


950

ตามเอกสารกฎของ StyleCopการสั่งซื้อมีดังนี้

ภายในคลาส struct หรือส่วนต่อประสาน: (SA1201 และ SA1203)

  • ฟิลด์คงที่
  • ทุ่ง
  • ก่อสร้าง
  • Finalizers (Destructors)
  • ผู้ได้รับมอบหมาย
  • เหตุการณ์ที่เกิดขึ้น
  • enums
  • อินเทอร์เฟซ ( การใช้งานอินเตอร์เฟส )
  • คุณสมบัติ
  • indexers
  • วิธีการ
  • structs
  • การเรียนการสอน

ภายในแต่ละกลุ่มเหล่านี้เรียงตามการเข้าถึง: (SA1202)

  • สาธารณะ
  • ภายใน
  • ป้องกันภายใน
  • มีการป้องกัน
  • เอกชน

ภายในแต่ละกลุ่มการเข้าถึงเรียงลำดับตามสแตติกแล้วไม่ใช่สแตติก: (SA1204)

  • คงที่
  • ไม่คงที่

ภายในแต่ละกลุ่มของเขตข้อมูลแบบคงที่ / ไม่คงที่เรียงตามลำดับโดยอ่านอย่างเดียวและไม่ใช่แบบอ่านอย่างเดียว: (SA1214 และ SA1215)

  • อ่านเท่านั้น
  • ไม่ใช่อ่านได้อย่างเดียว

รายการที่ไม่ได้ควบคุมคือความยาว 130 บรรทัดดังนั้นฉันจะไม่ยกเลิกการเปิดที่นี่ วิธีการส่วนที่ไม่ได้ควบคุมคือ:

  • วิธีการคงที่สาธารณะ
  • วิธีการสาธารณะ
  • วิธีการคงที่ภายใน
  • วิธีการภายใน
  • วิธีการป้องกันแบบคงที่ภายใน
  • วิธีการป้องกันภายใน
  • วิธีการป้องกันแบบคงที่
  • วิธีการป้องกัน
  • วิธีการคงที่ส่วนตัว
  • วิธีการส่วนตัว

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


31
ฉันขอขอบคุณสำหรับความพยายามในโพสต์นี้ ฉันพยายามทำให้สิ่งของ StyleCop เป็นมาตรฐาน (แม้ว่าจะสอดคล้องและทำให้ง่ายต่อการค้นหาสิ่งต่าง ๆ ) และสิ่งนี้มีค่า
Kenny Mann

47
โดยส่วนตัวแล้วฉันพบว่าการเรียงลำดับของวิธีการคงที่น่ารำคาญ ฉันสามารถดูอาร์กิวเมนต์สำหรับวิธีการคงที่สาธารณะมาก่อน แต่โดยปกติฉันต้องการวิธีคงที่ส่วนตัวหลังจากสมาชิก พวกเขาเป็นสาธารณูปโภคหลังจากทั้งหมด
34418 Jonathan Jonathan Wright

18
ฉันชอบเคล็ดลับบางส่วนของชั้นเรียน
Keith Sirmons

10
เพียงแค่ทราบในชั้นเรียนบางส่วน เนื่องจากในช่วงเวลาคอมไพล์ทุกส่วนจะถูกรวบรวมเป็นประเภทเดียวฉันจะพยายามให้เหตุผลที่ดีในการสร้างค่าใช้จ่ายเพิ่มเติมนั้น เหตุผลหลักสำหรับการเรียนบางส่วนคือการขยายซอร์สโค้ดอัตโนมัติหรือเมื่อทำงานกับโครงการขนาดใหญ่เพื่อให้นักพัฒนาหลายคนทำงานในคลาสเดียวกัน แต่แยกไฟล์
Nope

4
@ FrançoisWahlค่าโสหุ้ยเกี่ยวข้องกับคอมไพเลอร์ที่รวมคลาสบางส่วนเป็นประเภทเดียวที่ใหญ่หรือไม่?
dav_i

38

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


3
หาก "การเรียงลำดับ" โดยใช้คำแนะนำ StyleCop จะเป็นประเภทการใช้งาน มีเหตุผลที่ดีว่าทำไมบางวิธีจึงเป็นแบบสาธารณะและอื่น ๆ เป็นแบบส่วนตัว รหัสที่เป็นจริงดีกว่าอ่าน: ถ้าเปิด .cs ชั้นของไฟล์ฉันทันทีที่เห็นวิธีการที่ประชาชนซึ่งเป็น "สิ่งที่สำคัญมากกว่า" กว่าคนเอกชน (สำหรับคนที่ใช้ว่าชั้น)
hfrmobile

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

10
แม้ว่าชั้นเรียนจะมีขนาดเล็ก แต่ก็ไม่มีเหตุผลที่จะจัดกลุ่มวิธีสาธารณะด้วยวิธีส่วนตัวที่สอดคล้องกันซึ่งเรียกโดยวิธีสาธารณะนี้เท่านั้น
Markus Meyer

11
+1 ถ้าเมธอดสาธารณะ Foo () เรียกว่า internalFoo ที่มีการป้องกัน / ส่วนตัวแล้ววิธีที่สองนั้นจะดีกว่า DoFoo () ในแหล่งที่มา
Anders Forsgren

60
การจัดกลุ่มตามหน้าที่การใช้งานเรียกว่าคลาส
MrDosu

26

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

ดังนั้นฉันเริ่มวางคอนสตรัคเตอร์เป็นไฟล์แรกในคลาสและผลลัพธ์นั้นออกมาในเชิงบวกอย่างมาก คำแนะนำมาตรฐานของการวางคอนสตรัคเตอร์หลังจากสิ่งอื่น ๆ รู้สึกไม่สอดคล้องกัน

คุณสมบัติตัวสร้างหลักที่จะเกิดขึ้นใน C # 6 แสดงหลักฐานว่าสถานที่ตามธรรมชาติสำหรับตัวสร้างอยู่ที่จุดสูงสุดของคลาส - ในความเป็นจริงตัวสร้างหลักจะถูกระบุแม้กระทั่งก่อนที่จะเปิดวงเล็บปีกกา

มันตลกดีที่ความแตกต่างของการจัดเรียงแบบนี้ทำให้เกิดความแตกต่างอีกมาก มันทำให้ฉันนึกถึงว่าusingเคยใช้คำสั่งสั่งอย่างไร - ด้วย System namespaces ก่อน คำสั่ง "จัดการการใช้" ของ Visual Studio ใช้คำสั่งนี้ ตอนนี้usings จะถูกเรียงตามลำดับตัวอักษรโดยไม่มีการรักษาพิเศษที่กำหนดให้กับ System namespaces ผลลัพธ์ที่ได้นั้นเรียบง่ายและสะอาดกว่า


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

1
ที่จริงแล้วลำดับที่พวกเขามักจะมองหาโดยมนุษย์แนวคิดของการเขียนโปรแกรมวรรณกรรมที่มนุษย์ควรอ่านรหัสได้ก่อน
สดใส

1
โปรดทราบว่าตัวสร้างหลักถูกลบออกจากแผนสำหรับ C # 6: stackoverflow.com/a/26915809/5085211
fuglede

4
9 ครั้งจากทั้งหมด 10 ฉันกำลังมองหาส่วนต่อประสานสาธารณะซึ่งเป็นสาเหตุที่ทำให้ฉันใส่สมาชิกสาธารณะทั้งหมดก่อนตามด้วยภายในตามด้วยการป้องกันและสุดท้ายโดยสมาชิกส่วนตัว
แมตต์เดวิส

15

ฉันไม่รู้เกี่ยวกับภาษาหรือมาตรฐานอุตสาหกรรม แต่ฉันมักจะวางสิ่งต่าง ๆ ตามลำดับนี้โดยแต่ละส่วนถูกห่อด้วย #region:

ใช้งบ

namespace

ชั้น

สมาชิกส่วนตัว

สมบัติสาธารณะ

ก่อสร้าง

วิธีการสาธารณะ

วิธีการส่วนตัว


นี่เป็นวิธีที่ฉันทำเช่นกัน ยกเว้นระหว่างสมาชิกในชั้นเรียนและส่วนตัวฉันมีค่าคงที่สาธารณะและ Enums ฯลฯ
deegee

ใช่ฉันต้องการเก็บทรัพย์สินสาธารณะหลังจากวิธีส่วนตัว คนอื่นชอบวางคอนสตรัคเตอร์ก่อนสมบัติสาธารณะ ... แต่ในหัวของฉันฉันชอบที่จะมีค่า / คอนสตรัคเตอร์ / พฤติกรรมตามลำดับนั้น จากนั้น "ค่า" จะถูกแบ่งออกเป็นค่าคงที่ / privateMembers / properties และอื่น ๆ ปกติฉันจะไม่ใช้ภูมิภาคยกเว้นบางรุ่นที่มีวิวขนาดใหญ่ ... เอ่อ WPF viewmodels เป็นแบบพิเศษและในกรณีนี้ฉันมักจะใส่เขตข้อมูลส่วนตัวสำรองไว้ก่อนทรัพย์สินสาธารณะแต่ละรายการ ในกรณีนี้ชุดของเขตข้อมูลส่วนตัวรวมถึงสมาชิกสาธารณะคือหน่วยเดียวกัน
zameb

15

ฉันจะแนะนำให้ใช้มาตรฐานการเข้ารหัสจากiDesignหรือคนที่ระบุไว้บนเว็บไซต์ของแบรดอับราม นี่คือสองสิ่งที่ดีที่สุดที่ฉันได้พบ

แบรดจะพูดว่า ...

สมาชิกของคลาสควรถูกเรียงตามตัวอักษรและจัดกลุ่มเป็นส่วนต่างๆ (ฟิลด์, ตัวสร้าง, คุณสมบัติ, กิจกรรม, วิธีการ, การนำไปใช้งานอินเทอร์เฟซส่วนตัว, ชนิดซ้อน)


3
ลิงค์นั้นดูเหมือนจะนำไปสู่หน้าแรกของ IDesign ในวันนี้ ดูเหมือนว่ามาตรฐานการเข้ารหัสจะถูกซ่อนอยู่หลังลิงค์ดาวน์โหลดทางอีเมลวันนี้ #justsaying
Liam

แนวทางควรมีเหตุผล เหตุผลของการทำเช่นนี้คือ: 1. เพื่อให้คุณเข้าใจ 2. เพื่อให้คุณสามารถใช้วิจารณญาณเกี่ยวกับแนวเขตแดนบอบบางละเอียดคลุมเครือคาดไม่ถึงหรือขัดแย้งกัน 3. เพื่อให้คุณสามารถปรับเปลี่ยนได้เมื่อเงื่อนไขเปลี่ยนแปลง
Pablo H

6

ตามที่กล่าวไว้ก่อนหน้านี้ไม่มีอะไรในภาษา C # ที่กำหนดเค้าโครงฉันใช้พื้นที่โดยส่วนตัวและฉันทำสิ่งนี้ในชั้นเรียนปกติ

public class myClass
{
#region Private Members

#endregion
#region Public Properties

#endregion

#region Constructors

#endregion
#region Public Methods

#endregion
}

มันทำให้รู้สึกถึงฉัน


19
นี่คือการพูด (สำหรับข้อมูลเท่านั้น) ที่ stylecop ไม่แนะนำให้ใช้พื้นที่ (SA1124 DoNotUseRegions)
Gerwald


1
@zwcloud แน่นอนว่าในไฟล์ที่มี 5538 บรรทัดจำเป็นต้องใช้ขอบเขต แต่นั่นไม่ได้หมายความว่าคุณควรใช้พื้นที่ในไฟล์ปกติ
Ghost4Man

1
@ Gerwald: ฉันคิดว่า StyleCop สำหรับคนที่ใช้ StyleCop เท่านั้น เป็นหนึ่งในหลายมาตรฐาน
zameb

1
@zameb: ฉันจะบอกว่ากฎ StyleCop เป็นหนึ่งในแนวทางการเข้ารหัสที่พบมากที่สุดสำหรับ C # เมื่อการเข้ารหัสในภาษาใด ๆ ฉันพยายามค้นหาแนวทางการเข้ารหัสที่พบบ่อยที่สุดและทำตามพวกเขา
Gerwald

5

จาก StyleCop

เขตข้อมูลส่วนตัวเขตข้อมูลสาธารณะตัวสร้างคุณสมบัติวิธีการสาธารณะวิธีการส่วนตัว

ในฐานะที่เป็น StyleCop เป็นส่วนหนึ่งของกระบวนการสร้าง MS คุณสามารถดูว่าเป็นมาตรฐานอย่างแท้จริง


น่าสนใจ คุณใช้ StyleCop เป็นประจำหรือไม่?
mmcdole

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

1
การใช้ StyleCop เป็นเวลานานและหากใช้คำแนะนำนั้นจะทำให้โค้ดอ่านง่ายขึ้น: ถ้าเปิดไฟล์. cs ของคลาสฉันจะเห็นวิธีสาธารณะที่สำคัญกว่า "ส่วนตัว" ในทันที ประชาชนคือ "อินเทอร์เฟซ" ของคลาสที่มีให้และสิ่งที่สามารถทดสอบได้ (เช่น TDD และ Test-First)
hfrmobile

1
ตามที่ฟิลด์สาธารณะ StyleCop ควรไปก่อนฟิลด์ส่วนตัวstylecop.com/docs/SA1202.html
Michael Freidgeim

1
คุณหมายถึงอะไรโดย "StyleCop เป็นส่วนหนึ่งของกระบวนการสร้าง MS" microsoft ใช้ StyleCop สำหรับรหัสทั้งหมดหรือไม่
Rico Suter

5

ฉันมักจะพยายามทำตามรูปแบบต่อไป:

  • สมาชิกแบบสแตติก (มักจะมีบริบทอื่น ๆ จะต้องเป็นเธรดที่ปลอดภัย ฯลฯ )
  • สมาชิกอินสแตนซ์

แต่ละส่วน (คงที่และอินสแตนซ์) ประกอบด้วยประเภทสมาชิกต่อไปนี้:

  • ผู้ประกอบการ (มักจะคงที่)
  • สาขา (เริ่มต้นก่อนการก่อสร้าง)
  • ก่อสร้าง
  • destructor ( เป็นประเพณีที่จะติดตามการก่อสร้าง )
  • คุณสมบัติ
  • วิธีการ
  • เหตุการณ์ที่เกิดขึ้น

จากนั้นสมาชิกจะถูกจัดเรียงตามการเปิดเผย (จากน้อยไปมากให้เห็นมากขึ้น):

  • เอกชน
  • ภายใน
  • การป้องกันภายใน
  • มีการป้องกัน
  • สาธารณะ

คำสั่งไม่ใช่ dogma: คลาสที่เรียบง่ายอ่านได้ง่ายขึ้นอย่างไรก็ตามคลาสที่ซับซ้อนมากขึ้นจำเป็นต้องจัดกลุ่มบริบทเฉพาะ


5

การตั้งค่าของฉันคือการสั่งซื้อตามประเภทและจากนั้นจะลดการมองเห็นดังนี้

public methods
public events
public properties

protected methods
protected events
protected properties

private methods
private events
private properties
private fields

public delegates
public interfaces
public classes
public structs

protected delegates
protected interfaces
protected classes
protected structs

private delegates
private interfaces
private classes
private structs

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

หมายเหตุ: ฉันไม่ได้ใช้ฟิลด์สาธารณะหรือเขตข้อมูลที่มีการป้องกัน


3
ตกลง ฉันสงสัยจริง ๆ ว่าความคิดในการวางสมาชิกส่วนตัวก่อนไม่ใช่การครอบครองจากวัน C ซึ่งต้องประกาศตัวแปรก่อน ฉันมักจะต้องการเห็นส่วนต่อประสานสาธารณะก่อนเสมอไม่ใช่ในชั้นเรียน
แมตต์เดวิส

1
ที่จริงแล้วสมเหตุสมผลมาก ฉันพนันได้เลยว่ามันคือโฮลด์จากค.
Aluan Haddad

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

4

สิ่งที่ใกล้เคียงกับที่คุณน่าจะพบมากที่สุดคือ "แนวทางการออกแบบโค้ดที่มีการจัดการและ. NET Framework" ( http://blogs.msdn.com/brada/articles/361363.aspx ) โดยแบรดเอบรัมส์

มีมาตรฐานมากมายที่อธิบายไว้ที่นี่ ส่วนที่เกี่ยวข้องคือ 2.8 ฉันคิดว่า


3

แนวทางการเขียนโค้ดเดียวที่ฉันเห็นที่แนะนำคือใส่ฟิลด์ที่ด้านบนของการกำหนดคลาส

ฉันมักจะใส่คอนสตรัคเตอร์ต่อไป

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


3
และเมื่อคุณต้องการภูมิภาค ... คุณได้สูญเสีย
Hamish Smith

3

ฉันชอบที่จะวางฟิลด์ส่วนตัวที่ด้านบนพร้อมกับคอนสตรัคเตอร์จากนั้นวางบิตส่วนต่อประสานสาธารณะหลังจากนั้นจากนั้นบิตส่วนต่อประสานส่วนตัว

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


3

ฉันทำให้มันง่ายที่สุด (สำหรับฉันอย่างน้อย)

การ
ประกาศการแจกแจง
Constructors
แทนที่ คุณสมบัติของ
เมธอดตัว จัดการเหตุการณ์



2

ไม่มีอะไรในภาษาที่บังคับใช้ในทางใดทางหนึ่ง ฉันมักจะจัดกลุ่มสิ่งต่าง ๆ ด้วยการมองเห็น (สาธารณะแล้วได้รับการปกป้องแล้วเป็นส่วนตัว) และใช้ #regions เพื่อจัดกลุ่มสิ่งต่าง ๆ ที่เกี่ยวข้องตามหน้าที่ไม่ว่าจะเป็นคุณสมบัติวิธีการหรืออะไรก็ตาม วิธีการก่อสร้าง (ไม่ว่าจะเป็น cker จริงหรือฟังก์ชั่นโรงงานคงที่) มักจะอยู่ที่ด้านบนเนื่องจากเป็นสิ่งแรกที่ลูกค้าต้องรู้


ฉันใช้ภูมิภาคเพื่อแยกจากกันโดยการมองเห็นเช่นกันและการมีเลย์เอาต์รหัส Regionerate ทำให้ฉันซื่อสัตย์ rauchy.net/regionerate
Semicolon ที่ถูกลืม

ฉันไม่เห็นปัญหาเกี่ยวกับการใช้ #regions แต่บ่อยครั้งที่ฉันพบว่าเมื่อฉันถูกล่อลวงให้ใส่ในภูมิภาคฉันจะแจ้งให้ฉันพิจารณาแยกชั้นเรียนของฉัน
mikecamimo

2

ฉันรู้ว่านี่เก่า แต่คำสั่งของฉันมีดังนี้:

ในลำดับสาธารณะการป้องกันส่วนตัวภายในนามธรรม

  • ค่าคงที่
  • ตัวแปรแบบคงที่
  • ทุ่ง
  • เหตุการณ์ที่เกิดขึ้น
  • คอนสตรัค (s)
  • วิธีการ
  • คุณสมบัติ
  • ผู้ได้รับมอบหมาย

ฉันชอบเขียนคุณสมบัติเช่นนี้ (แทนที่จะเป็นวิธีจดชวเลข)

// Some where in the fields section
private int someVariable;

// I also refrain from
// declaring variables outside of the constructor

// and some where in the properties section I do
public int SomeVariable
{
    get { return someVariable; }
    set { someVariable = value; }
}
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.