Я сталкиваюсь с довольно большим количеством занятий от бывшего сотрудника. При проверке того, что делает код, я наткнулся на struct
со internal static
свойствами.
Структура используется довольно часто. У большинства свойств есть только get
, но у некоторых есть set
и get
. Структура длиной около 200 строк с вложенными внутренними структурами.
Я не могу обернуть голову вокруг этой структуры и того, чего человек хотел достичь с ее помощью.
Это не проверено, и нет документации, которая заставляет меня задуматься, почему человек решил внедрить нечто подобное.
Структура содержит в основном настройки и пути, которые используются в программе.
Прежде чем я реорганизую этот код и назову его «ранним шедевром» разработчика, который сделал это, я хочу проверить, не ошибаюсь ли я, и вполне разумно использовать что-то подобное в очень редком случае.
Мои вопросы:
Зачем кому-то использовать структуру с открытыми статическими свойствами и как от нее избавиться (может быть, это хорошо известный рефакторинг или что-то в этом роде), поскольку она используется во всем коде (~ 800 ссылок, подсчитанных Visual Studio)
КСТАТИ:
он не помещается ни в какое пространство имен
internal struct ConfigurationPaths
{
private static string _pathConfig;
private static string _pathConfigUI;
private static string _pathConfigUI_Default;
private static string _pathConfig_DataToView;
//... removed the following lines due to readability in the question
internal static string AppPath
{
get
{
Module[] mod = Assembly.GetExecutingAssembly().GetModules();
return Path.GetDirectoryName(mod[0].FullyQualifiedName);
}
}
internal static string FilePath
{
set { _pathConfig = value; }
get { return _pathConfig; }
}
internal static string UserInterface
{
set { _pathConfigUI = value; }
get { return _pathConfigUI; }
}
internal static string UserInterface_Default
{
get
{
if (_pathConfigUI_Default == null)
{
String appPath = AppPath.AppendPathSeperatorIfNeeded();
_pathConfigUI_Default = String.Format("{0}files{1}config{1}ui{1}default.ux", appPath, Path.DirectorySeparatorChar);
}
return _pathConfigUI_Default;
}
}
internal static string UserInterface_GridView
{
set { _pathConfig_DataToView = value; }
get { return _pathConfig_DataToView; }
}
//... removed the following lines due to readability in the question
}