4

グループ化された一連のクラスについて何をすべきかについては、あまりよくわかりません。

私の状況: class のみに関連する 11 個のクラスがありますCharacter.csが、それらのすべてのクラス (Character.csおよびを含むCharacterManager.cs) は namespace 内にありますModels.Characters

クラスに名前を付けるより「適切な」または好ましい方法はどれですか。

(例):

CharacterDetails.cs CharacterSprites CharacterAppearance CharacterClientRights CharacterServerRights

また:

Details.cs Sprites Appearance ClientRights ServerRights

(それらはすべて (つまり、 、)で通知されますModels.CharactersModels.Characters.CharacterDetailsModels.Characters.Appearance

前もって感謝します。

4

7 に答える 7

6

個人的には「依存」です。通常、一貫性Characterを保つためにすべてにプレフィックスを付けますが、名前空間の下にすべてが既にある場合Character、 Character プレフィックスは冗長に見える可能性があります。

Models.Character.[X]と呼ばれる別のクラスが存在しないDetails場合、たとえば存在する可能性があり、今から数週間または数か月後にコードを振り返ると混乱する可能性があるUserDetails場合、という短い規則を使用することは簡単にわかります。DetailsUserDetailsCharacterDetails

結局のところ、それはあなたの個人的な好みであり、あなたのドメインをより正確に表すものは何ですか、DetailsそれともCharacterDetails?

于 2009-11-19T02:41:28.417 に答える
5

個人的には、名前空間の目的である 2 番目の方法に固執します: 関連するクラスのセットをグループ化します。最初の方法は、クラス名を長くするだけで、メリットはほとんどありません。

于 2009-11-19T02:05:47.123 に答える
2

ここにはおそらく正しい答えも間違った答えもありません。私はあなたの最初のスタイルを好むと思いますが、私は2番目のスタイルも使用しました。この特定の状況では、私がAPIの呼び出し元である場合、最初のスタイルを使用したコードを読みやすくなると思います。

于 2009-11-19T02:21:40.123 に答える
2

1 つを選択し、それをコード全体で一貫して使用する限り、どちらを選択しても正しいものです。

私の個人的な選択は、あなたの 2 番目のオプションです。名前空間が文字の場合、クラス名にプレフィックス文字を使用する理由はありません。

于 2009-11-19T05:05:04.973 に答える
2

それは本当に個人的な好みです。

私は好むだろう

CharacterDetails
CharacterSprites 
CharacterAppearance 
CharacterClientRights 
CharacterServerRights

その方が読みやすいからです。

通常、次の using ステートメントを使用します。

Models.Characters.Appearance

完全な記譜を行うつもりでない限り。

読みやすさを向上させるものなら何でも好きです。プロジェクトと一緒に作業しているチームにとっては重要かもしれません。それがあなただけの場合は、あなたが一番好きなことをして、将来コードを維持するのに役立つでしょう.

于 2009-11-19T02:05:59.540 に答える
2

あなたの名前空間はすでにそのクラスをCharacters傘下にグループ化しているので、私はあなたのクラスにCharacterモニカを付けません。

于 2009-11-19T02:07:01.940 に答える
1

クラスの名前付けによって作成される可能性のあるあいまいさについて考えてください。たとえば、「CharacterThread」(仮説) を示す「Thread」というクラスがあり、他のクラスが 2 つの名前空間を使用している場合

Models.Characters System.Diagnostics

使用するたびにスレッド名を完全に修飾する必要があります...これは時々苦痛になる可能性があります

于 2009-11-19T02:41:35.960 に答える