Konvensi Penamaan Untuk File Kelas Parsial

93

Saya membuat sebagian besar kode perancah ASP.NET MVC saya. Semua file yang dihasilkan adalah kelas parsial yang menggunakan konvensi penamaan standar. Misalnya, file pengontrol karyawan saya bernama EmployeeController.cs. Jika saya ingin memperluas EmployeeController dengan custom, logika non-generated, saya membuat file kelas parsial kedua bernama EmployeeControllerCustom.cs. Saya memisahkan logika kustom dan yang dihasilkan menjadi dua file berbeda sehingga saat berikutnya saya membuat EmployeeController, perubahan kustom saya tidak ditimpa. Menambahkan sufiks "Kustom" ke nama file tampaknya masuk akal bagi saya, tetapi adakah konvensi penamaan file kelas parsial yang lebih mapan yang harus saya ikuti?

Ben Griswold
sumber

Jawaban:

152

Saya menggunakan .pemisahan - misalnya EmployeeController.SomeSpecialBehaviour.cs. Saya juga menghubungkannya ke pohon proyek melalui "dependenUpon" atau apa pun itu di csproj, sehingga bersarang di bawah file (di explorer solusi) dengan rapi. Anda harus melakukannya dengan tangan (edit csproj) atau dengan addin; sebagai contoh:

<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>

muncul sebagai:

  • Subfolder
    • Program.cs
      • Program.Foo.cs
Marc Gravell
sumber
5
Saran DependentUpon sangat keren dan berfungsi dengan baik. Terima kasih telah memperhatikan. Jika saya membaca dengan benar, Anda tidak hanya menggunakan sufiks standar seperti "Kustom". Sufiks Anda selalu mengungkapkan maksud dari fungsionalitas file kelas parsial. Juga, apakah ada alasan mengapa Anda menggunakan file. pemisahan berlawanan dengan casing? Apakah itu. memberikan sesuatu yang lebih dari sekadar keterbacaan yang lebih baik? Terima kasih.
Ben Griswold
11
Benar - nama file menunjukkan maksud kode di bagian itu . Jadi jika saya menerapkan antarmuka eksotis (dan menjaga kode tetap terpisah), mungkin saja SomeType.ICustomTypeDescriptor.cs. The .(IMO) memisahkan dua hal: jenis sebenarnya ( SomeType) dan maksud ICustomTypeDescriptor- keduanya sudah sepenuhnya cased; selain itu, ini cocok dengan hal-hal seperti SomeForm.Designer.cs;-p
Marc Gravell
Sempurna. Terima kasih atas wawasan tambahannya. Jika saya dapat melakukan lebih dari sekadar memilih, jawaban dan nilai Anda sama benarnya dengan saya.
Ben Griswold
1
@Marc Gravell: apakah Anda kebetulan mengetahui ekstensi VS apa pun yang menyediakan fungsionalitas pengaturan DependentUpon untuk file?
Dyppl
2
@Dyppl Ekstensi FileNesting dapat melakukan ini
gt
15

Untuk menambah jawaban Marc Gravell, saya mengalami situasi dengan file dalam subfolder dan DependentUponnode diabaikan. Singkatnya adalah bahwa dalam kasus seperti itu, xml saya harus:

<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>

Saya harap ini membantu seseorang :)

Yang Tanpa Nama
sumber
saya juga. itu terjadi karena saya memulai proyek dalam database-first dan ketika itu membuat model itu meletakkannya di dalam diagram model. VS2015 jika itu membuat perbedaan bagi siapa pun.
Joshua K