Использование вложенных классов для констант?
Что случилось с использованием вложенных классов для группировки констант?
Так же:
public static class Constants
{
public static class CategoryA
{
public const string ValueX = "CatA_X";
public const string ValueY = "CatA_Y";
}
public static class CategoryB
{
public const string ValueX = "CatB_X";
public const string ValueY = "CatB_Y";
}
}
Используется так:
Console.WriteLine(Constants.CategoryA.ValueY);
Console.WriteLine(Constants.CategoryB.ValueX);
Вы также можете сделать частичный "Constants"...
Ответы
Ответ 1
Существует несколько guideline (обновлено для fx 4.5) против общедоступных классов:
√ DO использовать вложенные типы, когда взаимосвязь между вложенным типом и его внешним типом такова, что семантика доступности компонента желательна.
X ИЗБЕГАЙТЕ публично открытые вложенные типы. Единственным исключением является то, что переменные вложенного типа должны быть объявлены только в редких сценариях, таких как подклассы или другие расширенные сценарии настройки.
X НЕ используйте вложенные типы, если тип, вероятно, будет ссылаться вне содержащего типа.
Я думаю, что ваш пример соответствует первой точке (то есть: вы хороши).
Ответ 2
Кто сказал, что это неправильно? Константы могут быть (и указаны) в любом месте иерархии классов.
Ответ 3
Не говоря, что вы сделали неправильно, но как насчет использования пространств имен, а не так:
namespace Constants
{
public static class CategoryA
{
public const string ValueX = "CatA_X";
public const string ValueY = "CatA_Y";
}
public static class CategoryB
{
public const string ValueX = "CatB_X";
public const string ValueY = "CatB_Y";
}
}