Tidak.
Saya sudah mencoba kedua metode pada proyek kecil dan besar, baik dengan satu (saya) dan tim pengembang.
Saya menemukan rute paling sederhana dan paling produktif adalah memiliki satu namespace per proyek dan semua kelas masuk ke namespace itu. Anda kemudian bebas untuk meletakkan file kelas ke dalam folder proyek apa pun yang Anda inginkan. Tidak ada masalah tentang menambahkan pernyataan menggunakan di bagian atas file sepanjang waktu karena hanya ada satu namespace.
Sangat penting untuk mengatur file sumber ke dalam folder dan menurut saya itu semua folder harus digunakan. Membutuhkan bahwa folder ini juga memetakan ke ruang nama tidak perlu, menciptakan lebih banyak pekerjaan, dan saya menemukan itu benar-benar berbahaya bagi organisasi karena beban tambahan mendorong disorganisasi.
Ambil peringatan FxCop ini sebagai contoh:
CA1020: Hindari ruang nama dengan beberapa jenis
penyebab: Sebuah ruang nama selain ruang nama global mengandung kurang dari lima jenis
https://msdn.microsoft.com/en-gb/library/ms182130.aspx
Peringatan ini mendorong pembuangan file baru ke folder Project.General umum, atau bahkan root proyek sampai Anda memiliki empat kelas yang sama untuk membenarkan membuat folder baru. Akankah itu terjadi?
Menemukan File
Jawaban yang diterima mengatakan, "Kelas-kelas akan lebih mudah ditemukan dan itu saja harus menjadi alasan yang cukup baik."
Saya menduga jawabannya merujuk memiliki beberapa ruang nama dalam proyek yang tidak memetakan ke struktur folder, daripada apa yang saya sarankan yang merupakan proyek dengan ruang nama tunggal.
Dalam kasus apa pun ketika Anda tidak dapat menentukan folder mana file kelas berada dari namespace, Anda dapat menemukannya dengan menggunakan Go To Definition atau kotak pencarian solusi explorer di Visual Studio. Juga ini bukan masalah besar menurut saya. Saya bahkan tidak mengeluarkan 0,1% dari waktu pengembangan saya pada masalah menemukan file untuk membenarkan pengoptimalannya.
Bentrokan nama
Tentu membuat banyak ruang nama memungkinkan proyek memiliki dua kelas dengan nama yang sama. Tetapi apakah itu benar-benar hal yang baik? Apakah mungkin lebih mudah untuk tidak mengizinkan hal itu terjadi? Membiarkan dua kelas dengan nama yang sama menciptakan situasi yang lebih kompleks di mana 90% dari semua waktu bekerja dengan cara tertentu dan kemudian tiba-tiba Anda menemukan Anda memiliki kasing khusus. Katakanlah Anda memiliki dua kelas Rectangle yang didefinisikan dalam ruang nama yang terpisah:
- class Project1.Image.Rectangle
- kelas Project1.Window.Rectangle
Dimungkinkan untuk mencapai suatu masalah bahwa file sumber harus menyertakan kedua ruang nama. Sekarang Anda harus menulis namespace lengkap di mana saja di file itu:
var rectangle = new Project1.Window.Rectangle();
Atau mengacaukan dengan beberapa pernyataan menggunakan jahat:
using Rectangle = Project1.Window.Rectangle;
Dengan satu namespace dalam proyek Anda, Anda dipaksa untuk membuat yang berbeda, dan saya berpendapat lebih deskriptif, nama-nama seperti ini:
- class Project1.ImageRectangle
- kelas Project1.WindowRectangle
Dan penggunaannya sama di mana-mana, Anda tidak harus berurusan dengan kasus khusus ketika file menggunakan kedua jenis.
menggunakan pernyataan
using Project1.General;
using Project1.Image;
using Project1.Window;
using Project1.Window.Controls;
using Project1.Shapes;
using Project1.Input;
using Project1.Data;
vs.
using Project1;
Kemudahan tidak harus menambahkan ruang nama sepanjang waktu saat menulis kode. Ini bukan waktu yang dibutuhkan, ini adalah penghentian karena harus melakukannya dan hanya mengisi file dengan banyak menggunakan pernyataan - untuk apa? Apakah itu layak?
Mengubah struktur folder proyek
Jika folder dipetakan ke namespaces maka path folder proyek secara efektif dikodekan ke dalam setiap file sumber. Ini berarti setiap perubahan nama atau pemindahan file atau folder dalam proyek membutuhkan konten file aktual untuk berubah. Baik deklarasi namespace file dalam folder itu dan menggunakan pernyataan dalam sejumlah file lain yang mereferensikan kelas dalam folder itu. Sementara perubahan itu sendiri sepele dengan tooling, biasanya menghasilkan komit besar yang terdiri dari banyak file yang kelasnya bahkan belum berubah.
Dengan namespace tunggal dalam proyek Anda dapat mengubah struktur folder proyek namun Anda inginkan tanpa file sumber itu sendiri sedang dimodifikasi.
Visual Studio secara otomatis memetakan namespace file baru ke folder proyek yang dibuatnya
Sayangnya, tapi saya merasa kesulitan untuk memperbaiki namespace lebih mudah daripada berurusan dengan mereka. Saya juga sudah terbiasa menyalin file yang sudah ada daripada menggunakan Add-> New.
Intellisense dan Object Browser
Manfaat terbesar menurut saya menggunakan banyak ruang nama dalam proyek-proyek besar adalah memiliki organisasi ekstra saat melihat kelas dalam alat apa pun yang menampilkan kelas dalam hierarki ruang nama. Bahkan dokumentasi. Jelas memiliki hanya satu namespace dalam hasil proyek di semua kelas yang ditampilkan dalam satu daftar daripada dibagi ke dalam kategori. Namun secara pribadi saya tidak pernah bingung atau tertunda karena kekurangan ini jadi saya tidak menemukan manfaat yang cukup besar untuk membenarkan beberapa ruang nama.
Meskipun jika saya sedang menulis perpustakaan kelas publik yang besar maka saya mungkin akan menggunakan banyak ruang nama dalam proyek sehingga perakitan terlihat rapi dalam perkakas dan dokumentasi.