2017-08-04 13 views
0

は、クラスと名前空間で異なる名前を使用することが推奨されていましたが、それを達成するのは難しい場合があります。 これは簡単なことです。特定のケースのために同じ名前を使用する必要がある場合、決して解決策を提供しません。C#で名前空間とクラスの同じ名前を避けるには?

は、たとえばのために、私は、構成に関するすべてのクラスを見つけるために名前空間を必要とし、その名前空間はABC.Configurationと命名されています。私はこの名前に間違いがないとは思わない。

名前空間の下には構成を保存するクラスが必要なので、その名前も構成になります。合理的だと思いませんか?

さらに、私は名前空間の下にConfigurationBuilder、ConfigurationManagerなどのいくつかのクラスを持っています。

は、Java、パッケージ名でより多くが何我々は「PascalCase」を使う「キャメルケース」、およびクラス名を使用します。だから、命名のために問題はありません。

だから、C#で、このシナリオでは、クラスに名前を付けるか?


はどうもありがとうございました。 Configuration.Configurationを使用する場合、ネーミングのためだけに書く必要があります。他のものは名前空間のないConfigurationManagerだけです。それは少し混乱です。

ConfigurationStoreを使用するアイディアは良いことです。ありがとうございます。 私は、クラスに名前を付けるという解決策は、その名前で使用法を明確に識別し、別の単語を追加することだと思います。 しかし私のプロジェクトでは、Configurationをどこかで使う必要があります.ConfigurationStore.Pathを書いて設定を読み込むと、それは奇妙に見えます。 IConfigurationのようなインターフェイスを使用して、名前付けの問題を回避することができます。

+0

「Configuration.Configuration」タイプを持つことができます。あなたがそれをするのを妨げるものは何もありません。 – poke

+0

C#はすべて小文字( 'configuration.configuration')で名前を付けることができますが、名前空間、クラス、およびメソッドの命名規則には' PascalCase'が推奨されます。 –

+0

小文字を使用しようとしました。しかし、他のすべてのライブラリがPascalCaseなので、それは混乱でした。 – HalfLegend

答えて

2

名前空間に名前を付けることができますConfigurationManagement。構成を保存する場合は、クラス名をConfigurationStoreとします。

camelCaseとPascalCase:クラスのように名前空間の名前を付けるのと同じツールは悪いです。大文字のみが異なる名前のエンティティも悪いことを伝えます。

より良い名前を見つけてください。

0

C#では、PascalCaseが両方のシナリオで使用されています。もし私が間違っていなければ、名前空間とクラスのために。

0

名前空間とクラスに同じ名前を使用しても問題ありません。 using指示がある場合、ConfigurationクラスをConfiguration.ConfigurationまたはConfigurationとして参照できます。混乱はありません。

それはあなたが名前空間と同じ名前のクラスを持って好きではないだけで、あなたの個人的な好みであれば、ここでの設定のためのいくつかの他の名前である:

  • Config
  • Configurations
  • Configs
  • ConfigurationManager(クラス名のみ)

また、IDEはおそらく異なるアイコンを持つことによって識別子が示すものを教えてくれるでしょう。 Xamarin Studioでたとえば:クラスはC Sでマークされながら

enter image description here

名前空間は{秒でマークされています。

+0

コンパイラは、いくつかの特別なシナリオでそれを抑制します。ただ言って。それはあなたがその点に達するまで完全に合法です。それから、ある身体部分に痛みがあります。特に彼らが問題を持ち、簡単に変更するオプションがないため、NuGetパッケージを他の人が使用するために公開した場合は、初めての方が簡単です。 – nvoigt

+0

だからこそ私はIIDEが、コンパイラが不平を言っている場合に識別子が何を参照しているのかを教えてくれるので、OPが何が起こっているのか把握できると指摘しました。 @nvoigt – Sweeper

+0

私は別名やabbrを使いたくありません。プロジェクトの一つの意味でConfigを1つの場所で使用することに決めた場合、どこでもConfigとなります – HalfLegend

0

ABCを持つことができるときに、なぜABC.Configurationを持っているのですか?つまり、長い名前はもちろんのこと、ちょっと混乱します。 ABC.Configuration.Configurationは、ABC.Configurationとは対照的に、Configurationクラスにアクセスするためのものです。私はむしろ後者を適用したいと思う。

+0

私は1つのクラスしか持たない場合、これを行います。他のクラスはどうですか? ConfigurationManager、ConfigurationBuilderをすべてABCに入れますか?それは混乱するでしょう、あなたは思いませんか? – HalfLegend

+0

@ HalfLegendしかし、いくつの設定タイプがそこにありますか?三? 3つの型の名前空間はあまりにも多すぎるようですが、そのような名前空間は決して*後で展開されることはありません。 – poke

+0

正確ではありません。たとえば、System.Configurationを見てください。これは、あらゆる種類のConfigurationクラスまたはメソッドを持っています。何よりも、名前を付けることはあなた次第です。あなたに私の助言は、それらを小さく保つことです。 – taiko

関連する問題