C#のいい名前空間とクラス名とは？CreateObjectServiceはなんでだめなの？


新人プログラマーです。

あるオブジェクトを生成するサービスの名前を、

> Hoge_Service.web.Services.CreateObjectService

と名付けたら、先輩に名前空間もクラス名もダメだと言われました。  
いったい何がおかしいのでしょうか。

`質問時のメールアドレスを間違えて登録してしまいました。`




.NET Frameworkには[名前付けのガイドライン](https://docs.microsoft.com/en-
us/dotnet/standard/design-guidelines/naming-guidelines)があります。この中に

> Do not use underscores to differentiate words, or for that matter, anywhere
> in identifiers.

とあり`Hoge_Service`について`_`で区切るべきではありません。

> The PascalCasing convention, used for all identifiers except parameter
> names, capitalizes the first character of each word

とあり`web`についてパラメーター以外は大文字から始めるべきです。

* * *

[名前空間の名前](https://docs.microsoft.com/en-us/dotnet/standard/design-
guidelines/names-of-namespaces)には

>
[code]

>     <Company>.(<Product>|<Technology>)[.<Feature>][.<Subnamespace>]
>  
[/code]

とあります。`Hoge_Service.web.Services`がこの名前付けルールに従っているとは言いがたいです。

* * *

[クラス名の名前](https://docs.microsoft.com/en-us/dotnet/standard/design-
guidelines/names-of-classes-structs-and-interfaces)には

> name classes and structs with nouns or noun phrases, using PascalCasing.

とあります。`CreateObjectService`では名詞や名詞句ではありません。`CreateObjectService`はむしろメソッド名に適切です。

