(Соглашения) C # Имена классов - PullRequest
4 голосов
/ 19 ноября 2009

Я не совсем уверен, что мне следует делать с сгруппированным набором классов.

Моя ситуация: у меня 11 классов, которые относятся только к классу Character.cs, но все эти классы (включая Character.cs и CharacterManager.cs) находятся в пространстве имен Models.Characters.

Какой способ именования классов является более "правильным" или предпочтительным:

(примеры):

CharacterDetails.cs CharacterSprites CharacterAppearance CharacterClientRights CharacterServerRights

или

Details.cs Sprites Appearance ClientRights ServerRights

(Они все замечены в Models.Characters (например, Models.Characters.CharacterDetails, Models.Characters.Appearance)

Заранее спасибо.

Ответы [ 7 ]

6 голосов
/ 19 ноября 2009

Лично для меня это "зависит". Обычно я ставлю все префикс перед словом Character, чтобы все было согласованно, однако, если у вас все уже есть в пространстве имен Character, префикс Character может показаться излишним.

Я мог бы легко увидеть переход с более коротким соглашением Models.Character.[X], если никогда не будет другого класса с именем Details, если, например, может быть UserDetails, тогда Details и UserDetails могут сбивать с толку при просмотре вернемся к коду через несколько недель или месяцев, и я бы лично предпочел вариант CharacterDetails.

В конце концов, это ваше личное предпочтение, что более точно описывает ваш домен, Details или CharacterDetails?

6 голосов
/ 19 ноября 2009

Лично я бы придерживался второго метода, так как для этого предназначены пространства имен: группировка связанных наборов классов. Первый способ - просто увеличить имена классов с незначительными преимуществами.

2 голосов
/ 19 ноября 2009

До тех пор, пока вы выбираете один и последовательно используете тот, который используется в вашем коде, тогда любой, который вы выберете, является правильным.

Мой личный выбор - твой второй вариант. Если ваше пространство имен является символьным, я не вижу смысла использовать префиксный символ в имени класса.

2 голосов
/ 19 ноября 2009

Здесь, вероятно, нет правильного или неправильного ответа. Я предпочитаю свой первый стиль, но я также использовал второй стиль. Я думаю, что в этой конкретной ситуации, если бы я использовал ваш API, мне было бы легче читать код, который использовал первый стиль.

2 голосов
/ 19 ноября 2009

Ваше пространство имен уже группирует свои классы под зонтиком Characters, поэтому я бы не стал называть ваши классы с помощью названия Character.

2 голосов
/ 19 ноября 2009

Это действительно личное предпочтение.

Я бы предпочел

CharacterDetails
CharacterSprites 
CharacterAppearance 
CharacterClientRights 
CharacterServerRights

Потому что это более читабельно.

Вы, как правило, будете иметь оператор использования

Models.Characters.Appearance

Если вы не собираетесь делать полную запись.

Я бы предпочел все, что улучшило бы читаемость. Это может иметь значение для проекта и команды, с которой вы работаете. Если это только вы, то делайте то, что вам нравится больше всего и поможет вам сохранить код в будущем.

1 голос
/ 19 ноября 2009

Подумайте о двусмысленности, которую может создать класс имен. Например, если у меня есть класс с именем «Thread», обозначающий «CharacterThread» (гипотетический), и если какой-то другой класс использует два пространства имен

Models.Characters System.Diagnostics

Мне придется полностью указывать имя потока каждый раз, когда я его использую ... что иногда может быть неприятно

...