หลักการตั้งชื่อสำหรับไฟล์คลาสบางส่วน


95

ฉันกำลังสร้างรหัสนั่งร้าน ASP.NET MVC จำนวนมาก ไฟล์ที่สร้างขึ้นทั้งหมดเป็นคลาสบางส่วนซึ่งใช้หลักการตั้งชื่อมาตรฐาน ตัวอย่างเช่นไฟล์ตัวควบคุมพนักงานของฉันชื่อ EmployeeController.cs หากฉันต้องการขยาย EmployeeController ด้วยตรรกะที่กำหนดเองและไม่ได้สร้างขึ้นฉันจะสร้างไฟล์คลาสบางส่วนที่สองชื่อ EmployeeControllerCustom.cs ฉันแยกตรรกะที่กำหนดเองและสร้างออกเป็นสองไฟล์ที่แตกต่างกันดังนั้นในครั้งต่อไปที่ฉันสร้าง EmployeeController การเปลี่ยนแปลงที่กำหนดเองของฉันจะไม่ถูกเขียนทับ การเพิ่มคำต่อท้าย "กำหนดเอง" ให้กับชื่อไฟล์ดูเหมือนจะสมเหตุสมผลสำหรับฉัน แต่มีหลักการตั้งชื่อไฟล์คลาสบางส่วนที่เป็นที่ยอมรับมากขึ้นซึ่งฉันควรปฏิบัติตามหรือไม่

คำตอบ:


156

ผมใช้.แยก - EmployeeController.SomeSpecialBehaviour.csตัวอย่างเช่น ฉันยังเชื่อมโยงไปยังแผนผังโครงการผ่าน "ขึ้นอยู่กับ" หรืออะไรก็ตามที่อยู่ใน csproj เพื่อให้มันทำรังภายใต้ไฟล์ (ใน solution explorer) อย่างเรียบร้อย คุณต้องทำด้วยมือ (แก้ไข csproj) หรือด้วย addin แม้ว่า; ตัวอย่างเช่น:

<Compile Include="Subfolder/Program.cs" />
<Compile Include="Subfolder/Program.Foo.cs">
  <DependentUpon>Program.cs</DependentUpon> <!-- Note that I do not reference the subfolder here -->
</Compile>

ปรากฏเป็น:

  • โฟลเดอร์ย่อย
    • Program.cs
      • Program.Foo.cs

5
ข้อเสนอแนะ DependentUpon นั้นเจ๋งมากและใช้งานได้ดี ขอบคุณที่แจ้งให้ทราบ หากฉันอ่านอย่างถูกต้องคุณไม่เพียง แต่ใช้คำต่อท้ายมาตรฐานเช่น "กำหนดเอง" คำต่อท้ายของคุณแสดงเจตนาของการทำงานของไฟล์คลาสบางส่วนเสมอ นอกจากนี้มีเหตุผลที่คุณใช้ไฟล์. แยกตรงข้ามกับปลอก? . ให้อะไรมากกว่าการอ่านที่ดีขึ้น? ขอบคุณ.
Ben Griswold

11
ถูกต้อง - ชื่อไฟล์ระบุเจตนาของโค้ดในส่วนนั้น ดังนั้นหากฉันใช้อินเทอร์เฟซที่แปลกใหม่ (และแยกโค้ดออกจากกัน) ก็อาจเป็นSomeType.ICustomTypeDescriptor.csได้ .(IMO) แยกสองสิ่ง: ประเภทที่เกิดขึ้นจริง ( SomeType) และเจตนาICustomTypeDescriptor- ทั้งที่มีอยู่แล้วใส่ซองอย่างเต็มที่ นอกจากนี้ยังเข้ากันอย่างลงตัวกับสิ่งต่างๆเช่นSomeForm.Designer.cs;-p
Marc Gravell

สมบูรณ์แบบ. ขอบคุณสำหรับข้อมูลเชิงลึกเพิ่มเติม ถ้าฉันทำได้มากกว่าโหวตคำตอบของคุณและทำเครื่องหมายว่าถูกต้องฉันจะทำ
Ben Griswold

1
@Marc Gravell: คุณมีโอกาสรู้จักส่วนขยาย VS ที่ให้ฟังก์ชันการตั้งค่า DependentUpon สำหรับไฟล์หรือไม่?
Dyppl

2
@Dyppl ส่วนขยายFileNestingสามารถทำได้
gt

15

เพื่อเพิ่มคำตอบของ Marc Gravell ♦ฉันมีสถานการณ์กับไฟล์ในโฟลเดอร์ย่อยและDependentUponโหนดถูกละเว้น สั้น ๆ ก็คือในกรณีเช่นนี้ xml ของฉันต้องเป็น:

<Compile Include="foo\bar.cs" />
<Compile Include="foo\bar.baz.cs">
    <DependentUpon>bar.cs</DependentUpon>  <!-- Note that I do not reference the subfolder here -->
</Compile>

ฉันหวังว่านี่จะช่วยใครสักคน :)


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