Saya beralih dari C ++ ke Java dan C # dan berpikir penggunaan namespace / paket jauh lebih baik di sana (terstruktur dengan baik). Kemudian saya kembali ke C ++ dan mencoba menggunakan namespace dengan cara yang sama tetapi sintaks yang diperlukan sangat buruk di dalam file header.
namespace MyCompany
{
namespace MyModule
{
namespace MyModulePart //e.g. Input
{
namespace MySubModulePart
{
namespace ...
{
public class MyClass
Hal berikut juga tampak aneh bagi saya (untuk menghindari indentasi yang dalam):
namespace MyCompany
{
namespace MyModule
{
namespace MyModulePart //e.g. Input
{
namespace MySubModulePart
{
namespace ...
{
public class MyClass
{
Apakah ada cara yang lebih singkat untuk mengungkapkan hal di atas? Saya kehilangan sesuatu seperti
namespace MyCompany::MyModule::MyModulePart::...
{
public class MyClass
Memperbarui
Ok, ada yang bilang konsep penggunaan di Java / C # dan C ++ berbeda. Betulkah? Saya pikir pemuatan kelas (dinamis) bukan satu-satunya tujuan untuk ruang nama (ini adalah perspektif beralasan yang sangat teknis). Mengapa saya tidak menggunakannya untuk keterbacaan dan penataan, misalnya memikirkan "IntelliSense".
Saat ini, tidak ada logika / perekat antara namespace dan apa yang dapat Anda temukan di sana. Java dan C # melakukan ini jauh lebih baik ... Mengapa menyertakan <iostream>
dan memiliki namespace std
? Oke, jika Anda mengatakan logika harus bergantung pada tajuk untuk menyertakan, mengapa #include tidak menggunakan sintaks ramah "IntelliSense" seperti #include <std::io::stream>
or <std/io/stream>
? Saya pikir strukturisasi yang hilang di libs default adalah salah satu kelemahan C ++ dibandingkan dengan Java / C #.
Jika keunikan untuk avid konflik adalah satu Titik (yang juga merupakan titik C # dan Java), ide yang bagus adalah menggunakan nama proyek atau nama perusahaan sebagai namespace, bukan begitu?
Di satu sisi dikatakan C ++ adalah yang paling fleksibel ... tetapi semua orang berkata "jangan lakukan ini"? Menurut saya C ++ dapat melakukan banyak hal tetapi memiliki sintaksis yang mengerikan bahkan untuk hal yang paling mudah dalam banyak kasus dibandingkan dengan C #.
Perbarui 2
Sebagian besar pengguna mengatakan tidak masuk akal untuk membuat sarang yang lebih dalam dari dua Tingkat. Ok, jadi bagaimana dengan Windows :: UI :: Xaml dan Windows :: UI :: Xaml :: Controls :: Primitives namespaces dalam pengembangan Win8? Saya pikir penggunaan namespace Microsoft masuk akal dan memang lebih dalam dari hanya 2 Level. Saya pikir perpustakaan / proyek yang lebih besar membutuhkan penyarangan yang lebih dalam (saya benci nama kelas seperti ExtraLongClassNameBecauseEveryThingIsInTheSameNameSpace ... maka Anda juga dapat memasukkan semuanya ke dalam namespace global.)
Perbarui 3 - Kesimpulan
Sebagian besar mengatakan "jangan lakukan itu", tetapi ... bahkan peningkatan memiliki tingkat yang lebih dalam daripada satu atau dua tingkat. Ya, ini adalah perpustakaan tetapi: Jika Anda menginginkan kode yang dapat digunakan kembali - perlakukan kode Anda sendiri seperti perpustakaan yang akan Anda berikan kepada orang lain. Saya juga menggunakan penyarangan yang lebih dalam untuk tujuan penemuan menggunakan ruang nama.
namespace
kata kunci?