Jumlah Kelas di Namespace - Kode Bau?


11

Saya memiliki pustaka C # yang digunakan oleh beberapa executable. Hanya ada beberapa ruang nama di perpustakaan, dan saya hanya memperhatikan bahwa salah satu ruang nama memiliki beberapa kelas di dalamnya. Saya selalu menghindari terlalu banyak kelas dalam ruang nama tunggal karena kategorisasi, dan karena secara tidak sadar, saya pikir itu terlihat "lebih cantik" untuk memiliki hierarki ruang nama yang lebih dalam.

Pertanyaan saya adalah: apakah orang lain menganggapnya sebagai "bau kode" ketika sebuah namespace memiliki banyak kelas - bahkan jika kelas-kelas tersebut berhubungan satu sama lain? Apakah Anda akan berusaha keras untuk menemukan nuansa di kelas yang memungkinkan untuk subkategori?


8
Jika kelas termasuk dalam namespace no. Desain sifatnya subyektif sehingga sulit untuk dikatakan dan lebih merupakan masalah preferensi seperti yang telah Anda identifikasi.
Chris

Whatecer StyleCop katakan adalah hukum. Saya yakin itu tidak akan menyukainya.
Ayub

2
Definisikan "beberapa". 10? 100? 1000?
Eric King

Jawaban:


7

Belum tentu. Jika semua kelas memang termasuk dalam kategori yang ditentukan oleh namespace, maka tidak apa-apa.

Yang bisa Anda lakukan adalah melihat kelas dan merenungkan kemungkinan menggabungkan beberapa dari mereka. Bisa jadi kelompok-kelompok kecil dari kelas-kelas itu mendukung fungsi "keluarga" tetapi diimplementasikan secara terpisah karena beberapa alasan historis. Sekarang ketika waktu yang cukup telah berlalu, komposisi yang lebih baik dimungkinkan.


6

Anda harus menghindari memiliki terlalu banyak ruang nama karena ini membuat perpustakaan lebih sulit untuk digunakan dan menavigasi untuk programmer. Selain itu, dengan banyak ruang nama dapat menjadi tantangan bagi perancang untuk memberikan nama yang akurat untuk setiap ruang nama dan juga untuk memutuskan di mana ruang nama kelas tertentu seharusnya berada.

Cara termudah ke depan adalah menempatkan semua kelas utama ke dalam ruang nama tunggal, menyelipkan kelas skenario lanjutan ke dalam ruang-sub-ruang nama; .NET Framework melakukan ini sepanjang waktu, lihat System.Collectionsdan System.Collections.Specializeduntuk contoh yang baik dari praktik ini.

Dengan hanya satu atau dua ruang nama tingkat pertama, kode Anda akan menjadi lebih mudah dinavigasi, dengan kelas lanjutan atau khusus Anda disembunyikan sampai programmer siap untuk menemukannya.


3

Selama mereka saling memiliki dan berhubungan satu sama lain, tidak ada masalah dengan memiliki terlalu banyak kelas di namespace.

Apakah sebuah kelas termasuk dalam namespace terpisah itu sendiri atau tidak adalah masalah preferensi pribadi.

Apa yang terlihat lebih alami?

Parsers.XML.XmlParser.cs
Parsers.XmlParser.cs

Ini sepenuhnya tergantung pada bagaimana Anda ingin melihat dan menjalankan kode Anda.

Secara pribadi, saya lebih suka ruang nama yang terpisah hanya ketika saya tahu akan ada lebih dari satu kelas miliknya.


0

Ini baik Alasan utama untuk memiliki ruang nama adalah untuk menghindari tabrakan nama dan hanya setelah ini kita harus berpikir tentang ruang lingkup logis, yang lebih merupakan masalah pilihan pribadi daripada aturan. Tentu saja beberapa aturan masuk akal diterima. Tidak ada yang ingin menelusuri kelas 3k ~ 4k dalam satu namespace.

Contoh yang baik adalah namespace std di C ++ Standard Library yang memungkinkan Anda untuk memisahkan algoritma Anda sendiri dari yang standar.


-1. Tabrakan nama itu penting, tetapi pengelompokan kelas secara konseptual juga penting.
umlcat
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.