แผนการตั้งชื่อใดสำหรับไฟล์ C # ที่มีหลายคลาส


20

ในโครงการ C # เรามักจะจัดกลุ่มคลาสที่เล็กและสัมพันธ์อย่างแน่นหนาไว้ใน.csไฟล์เดียวกัน การปฏิบัตินี้ช่วยลดความไม่ลงรอยกันของการจัดการกับไฟล์จำนวนมากที่มีรหัสใกล้เคียงกับไม่มีรหัสจริง ยังมีวิธีปฏิบัติที่กำหนดขึ้นเพื่อตั้งชื่อไฟล์ที่มีหลายคลาสหรือไม่?


13
ตรงไปตรงมาฉันชอบหนึ่งไฟล์หนึ่งชั้นแม้สำหรับชั้นเรียนขนาดเล็กมาก
Felice Pollano

คุณสามารถเลือกที่จะตั้งชื่อตามกลุ่มเหล่านี้เรียนที่เกี่ยวข้องแน่นตกอยู่ภายใต้
V4Vendetta

บางทีคลาสเหล่านั้นเล็กเกินไป? โดยส่วนตัวฉันจะจัดกลุ่มหลายกลุ่มในหนึ่งไฟล์ (บางครั้งมีคลาสบางครั้งก็รวมกันทั้งหมดขึ้นอยู่กับบริบท)
Konrad Morawski

@Felice: ดู MSpec :)
Bryan Boettcher

คำตอบ:


18

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

MyEnumerable.cs
MyEnumerable.MyEnumerator.cs

อาจเป็นไปได้ว่าคุณยังสามารถใช้ชื่อไฟล์หลายส่วนในกรณีของคุณ


4
อีกความคิดหนึ่ง คุณสามารถจัดกลุ่มไฟล์. cs หลายรายการภายในโครงการ Visual Studio เพื่อให้พวกเขาทั้งหมดปรากฏภายใต้โหนดเดียวกันในต้นไม้ (เช่นไฟล์. designer.cs) สิ่งนี้จะส่งสัญญาณว่าคลาสอยู่ในกลุ่มเดียวกันอย่างแน่นหนา

6

พยายามหลีกเลี่ยงการมีมากกว่าหนึ่งคลาสในไฟล์ไม่ใช่คลาสสาธารณะอย่างน้อยหนึ่งคลาส ขณะตั้งชื่อไฟล์คลาสที่มีหลายคลาสให้เลือกชื่อไฟล์ที่สื่อความหมาย

refrences:


4

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

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

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

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

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

ไชโย


3

ฉันเคยเป็นเพราะมีหลายคลาสในหนึ่งไฟล์ แต่ตั้งแต่ฉันเริ่มทำงานเป็นโปรแกรมเมอร์ (แทนที่จะเป็นของตัวเอง) ฉันพบว่ามันอาจเป็นฝันร้ายการบำรุงรักษาที่มีหลายคลาสในไฟล์เดียว แม้ว่าเป็นที่ยอมรับ Visual Studio สามารถช่วยได้มากโดยใช้ F12 (ไปที่คำจำกัดความ)

สิ่งที่ฉันได้เริ่มทำคือใช้หลักการตั้งชื่อดังนี้ namespace.classname.csฉันรู้ได้อย่างชัดเจนว่ามีอะไรอยู่ในแต่ละไฟล์และยังมีบริบทโดยรวมของไฟล์ ถ้าคลาสนั้นจะอยู่ในเนมสเปซที่เป็นค่าเริ่มต้นฉันจะไปข้างหน้าและใช้classname.cs (คล้ายกับ Java)

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