Должны перечисления в C# иметь свой собственный файл? [закрытый]

172
задан Finglas 8 December 2011 в 19:27
поделиться

12 ответов

Я бы не сказал «расточительно» (сколько стоит дополнительный файл?), Но часто это неудобно. Обычно есть один класс, который наиболее тесно связан с перечислением, и я помещаю их в один и тот же файл.

98
ответ дан 23 November 2019 в 20:39
поделиться

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

2
ответ дан 23 November 2019 в 20:39
поделиться

Обычно я предпочитаю, чтобы мои перечисления находились в том же файле, что и класс, атрибутом которого он, скорее всего, будет. Если, например, у меня есть класс Task , тогда перечисление TaskStatus будет в том же файле.

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

11
ответ дан 23 November 2019 в 20:39
поделиться

Я обычно помещаю перечисления в отдельный файл по очень простой причине: как и в случае с классами и структурами, хорошо знать точно , где искать, если вы хочу найти определение типа: в одноименном файле. (Честно говоря, в VS вы всегда можете использовать «Перейти к определению».)

Очевидно, это может выйти из-под контроля. Коллега, с которым я работаю, даже делает отдельные файлы для делегатов.

6
ответ дан 23 November 2019 в 20:39
поделиться

Это полностью вопрос стиля. Я предпочитаю иметь файл с именем Enums.cs в решении, в котором собраны объявления перечислений.

Но обычно их все равно находят с помощью клавиши F12 .

59
ответ дан 23 November 2019 в 20:39
поделиться

Я размещаю в основном внутри пространства имен и вне класса, чтобы он был легко доступен другим классам в этом пространстве имен, как показано ниже. .

namespace UserManagement
{
    public enum UserStatus { Active, InActive }
    class User
    {
        ...
    }
}
18
ответ дан 23 November 2019 в 20:39
поделиться

Еще одним преимуществом размещения каждого типа (class, struct, enum) в отдельном файле является контроль исходных текстов. Вы можете легко получить всю историю типа.

23
ответ дан 23 November 2019 в 20:39
поделиться

Задайте себе вопрос: есть ли что-нибудь в типе перечисления в C #, которое указывает на то, что я должен его лечить отличается от всех других типов, которые я создаю?

Если перечисление является общедоступным, его следует рассматривать как любой другой открытый тип. Если он частный, объявите его как вложенный член класса, который его использует. Нет веских причин помещать два общедоступных типа в один файл просто потому, что один является перечислением. Тот факт, что это общедоступный тип, - вот все, что имеет значение; аромат типа нет.

44
ответ дан 23 November 2019 в 20:39
поделиться

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

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

Размещение одного типа в каждом файле также облегчает выявление изменений в системах контроля исходных текстов без использования diff.

74
ответ дан 23 November 2019 в 20:39
поделиться

Это зависит от того, какой доступ требуется.

Если перечисление используется только одним классом, можно объявить его внутри этого класса, потому что вам не нужно использовать его где-либо еще.

Для перечислений, используемых несколькими классами или в общедоступном API, я всегда буду хранить определение в отдельном файле в соответствующем пространстве имен. Такой способ найти намного проще, и стратегия следует шаблону «один объект на файл», который также хорошо использовать с классами и интерфейсами.

9
ответ дан 23 November 2019 в 20:39
поделиться

Одним из преимуществ использования отдельного файла для перечислений является то, что вы можете удалить исходный класс, который использовал перечисление, и написать новый класс, использующий это перечисление.

Если перечисление не зависит от исходного класса, то размещение его в отдельном файле облегчает будущие изменения.

6
ответ дан 23 November 2019 в 20:39
поделиться

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

enum SearchType { Forward, Reverse }

Если перечисление общее и может использоваться несколькими классами для различных сценариев, то я бы склонялся к тому, чтобы поместить его в отдельный файл. Например, приведенное ниже перечисление можно использовать для нескольких целей:

enum Result { Success, Error }
8
ответ дан 23 November 2019 в 20:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: