В search => файле есть опция, а ярлык - Ctrl + H. Идите, чтобы продолжить ссылку. Это отлично работает с Eclipse Neon
Почему перечисления обработки по-другому к другим типам? Сохраните их в том же пространстве имен, поскольку они, вероятно, будут использоваться - и предположение, что они собираются быть используемыми другими классами, делают их типами верхнего уровня в их собственных файлах.
единственный тип типа, который я делаю обычно глыба вместе, является делегатами - у меня иногда есть файл Delegates.cs с набором делегатов в. Меньше с.NET 3.5 и Func/Action, заметьте.
Я обычно пытаюсь поместить все свои различные типы (классы, интерфейсы и перечисления) в их собственных файлах, независимо от того, насколько маленький они. Это просто делает намного легче найти и управлять файлом, они находятся в, особенно если Вы, оказывается, не находитесь в Visual Studio и не имеете, "переходят к определению" доступная функция. Я нашел, что почти каждый раз поместил "простой" тип как этот в другом классе, я заканчиваю или прибавляющий к нему позже или снова использующий его способом, что больше не имеет смысл для него не иметь свой собственный файл.
, До которого пространства имен, это действительно зависит от дизайна того, что Вы разрабатываете. В целом я пытаюсь подражать соглашению платформы.NET.
Кроме того, пространства имен для разделения вещей, которые принадлежат вместе логически. Не все классы принадлежат того же пространства имен просто, потому что они - классы. Аналогично, не все перечисления принадлежат того же пространства имен просто, потому что они - перечисления. Поместите их с кодом, которого они логически принадлежат.
Я пытаюсь поместить все связанное с классом в классе. Это включает не только перечисления, но также и константы. Я не хочу идти, ища в другом месте файл или класс, содержащий перечисления. В крупном приложении с большим количеством классов и папок, не всегда было бы очевидно, куда поместить перечислимый файл, таким образом, будет легко найти.
, Если перечисление, если используется в нескольких тесно связанных классах, Вы могли бы создать базовый класс так, чтобы общие типы как перечисления были совместно использованы там.
, Конечно, если перечисление действительно универсально и широко используемое, можно хотеть создать отдельный класс для них, наряду с другими универсальными утилитами.
Если мое перечисление имеет шанс того, чтобы когда-нибудь быть используемым вне класса, я намереваюсь использовать его, я создаю отдельный исходный файл для перечисления. Иначе я помещу его в классе, я намереваюсь использовать его.
Какая среда?
В.NET я обычно создаю пустой файл класса, переименовываю ее к MyEnum или безотносительно указать, что она содержит мое перечисление, и просто объявите его там.
Обычно я нахожу, что перечисление центрируется вокруг единого класса - как тип MyClassOptions вещи.
В этом случае, я помещаю перечисление в тот же файл как MyClass, но в пространстве имен, но вне класса.
namespace mynamespace
{
public partial class MyClass
{
}
enum MyClassOptions
{
}
}
Я склонен определять их, где их использование очевидно в очевидном. Если у меня есть определение типа для структуры, которая использует его по некоторым причинам...
typedef enum {
HI,
GOODBYE
} msg_type;
typdef struct {
msg_type type;
union {
int hivar;
float goodbyevar;
}
} msg;
Я думаю, что вы помещаете Enums и Constants в класс, который их потребляет или который использует их для контроля кодовых решений больше всего, и вы используете завершение кода для их поиска. Таким образом, вам не нужно помнить, где они находятся, они связаны с классом. Так, например, если у меня есть класс ColoredBox, мне не нужно думать о том, где они находятся. Они будут частью ColoredBox. ColoredBox.Colors.Red, ColoredBox.Colors.Blue и т.д. I Я думаю о перечислении и константе как о свойстве или описании этого класса. Если он используется несколькими классами, и ни один класс не доминирует, то уместно иметь класс перечислений или класс констант. Это соответствует правилам инкапсуляции. Изоляция свойств от несхожих классов. Что если вы решите изменить RGB красного цвета в объектах Cirle, но но не хотите менять красный цвет для объектов ColoredBox? Инкапсуляция их свойств позволяет это сделать.