Apa konvensi penamaan untuk file C # yang berisi beberapa kelas?


20

Dalam proyek C #, kami sering mengelompokkan kelas-kelas kecil dan terkait erat ke dalam .csfile yang sama . Praktik ini mengurangi gesekan berurusan dengan segudang file yang berisi hampir tidak ada kode aktual. Namun, apakah ada praktik yang mapan untuk menamai file yang berisi banyak kelas?


13
terus terang saya lebih suka satu file satu kelas bahkan untuk kelas yang sangat kecil
Felice Pollano

Anda dapat memilih untuk menamainya sesuai grup yang termasuk dalam kelas terkait ini.
V4Vendetta

Mungkin kelas-kelas itu terlalu kecil? Secara pribadi saya hanya mengelompokkan beberapa enum dalam satu file (kadang-kadang dengan kelas, kadang-kadang semua enum bersama, tergantung pada konteksnya).
Konrad Morawski

@Felice: lihat MSpec :)
Bryan Boettcher

Jawaban:


18

Saran saya: hindari file yang mengandung banyak kelas dan beri nama file == kelas walaupun Anda maksudnya ada terlalu banyak file. Cobalah untuk mengaturnya dalam folder. Dalam kasus yang sangat khusus, Anda mungkin memiliki kelas bersarang. Dalam hal ini masuk akal memisahkan kelas utama dan kelas bersarang menjadi file yang berbeda memiliki satu kelas parsial. Dalam hal ini saya menggunakan konvensi penamaan berikut.

MyEnumerable.cs
MyEnumerable.MyEnumerator.cs

Mungkin Anda juga dapat menggunakan nama file multi bagian dalam kasus Anda.


4
Satu ide lagi. Anda dapat mengelompokkan beberapa file .cs di dalam Visual Studio Project sehingga semuanya muncul di bawah simpul yang sama di pohon (seperti file .Designer.cs). Ini akan memberi sinyal kepada Anda bahwa kelas-kelas secara ketat saling memiliki.


4

Pertimbangkan bahwa dengan mengajukan pertanyaan tentang cara memberi nama file seperti itu, Anda telah mengidentifikasi bau kode yang bermasalah untuk Anda, dan ini adalah masalah yang tidak akan hilang dengan mudah.

Terlepas dari alasannya, Anda akan menemukan bahwa sulit untuk memilih nama yang masuk akal ketika Anda memiliki lebih dari satu kelas dalam suatu file, karena bahkan jika file tersebut terkait dalam beberapa cara, akan selalu ada godaan untuk melempar sesuatu yang tidak cukup sesuai dengan nama grup yang Anda tetapkan untuk satu set kelas.

Karena itu, jawaban singkatnya adalah tidak ada standar yang diakui atau ditetapkan untuk memberi nama file-file ini. Saran saya adalah duduk dengan tim Anda dan melihat ke organisasi kode Anda, dan menerapkan sedikit upaya refactoring untuk merapikan semuanya.

Namun, untuk mempermudah, saya akan bertanya apakah kelas tambahan bersarang, atau mandiri. Jika independen, maka kelas-kelas ini dapat lebih mudah dibagi menjadi file mereka sendiri, dengan masing-masing file diberi nama untuk kelas tunggal yang terkandung di dalamnya. Jika bersarang, maka keputusan lebih lanjut mungkin perlu dibuat tentang bagaimana kelas tersebut harus diatur, namun kelas bersarang mungkin tidak perlu segera dihapus, dan oleh karena itu file akan dinamai untuk kelas terluar. Sejauh menyangkut sarang, ada banyak argumen yang menentang, dan beberapa argumen yang masuk akal untuk bersarang dalam beberapa keadaan, dan saran saya adalah menanyakan apakah penempatan nama yang masuk akal dan menciptakan struktur kode sumber yang lebih terorganisir mungkin merupakan cara yang lebih baik untuk menangani masalah.

Namun secara realistis, Anda akan menemukan bahwa pada akhir masa proyek Anda, Anda akan berharap semua file Anda hanya berisi satu kelas dan struktur direktori / namespace yang bagus untuk digunakan.

Tepuk tangan,


3

Saya dulu semua memiliki beberapa kelas dalam satu file, tetapi sejak saya mulai benar-benar bekerja sebagai programmer (daripada menjadi saya sendiri), saya telah menemukan bahwa itu bisa menjadi mimpi buruk pemeliharaan dengan banyak kelas dalam satu file. Meskipun, diakui, Visual Studio dapat banyak membantu dengan menggunakan F12 (masuk ke definisi).

Apa yang sudah saya mulai lakukan adalah menggunakan konvensi penamaan sebagai berikut: namespace.classname.cs Dengan begitu saya tahu persis apa yang ada di setiap file dan juga menyediakan semacam konteks keseluruhan file. Jika kelas akan berada di namespace default, maka saya langsung saja menggunakan classname.cs (mirip dengan Java).

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.