Недавно я рассматривал несколько статических классов «вспомогательных пакетов» в стиле Хелпера, плавающих вокруг больших кодовых баз C #, с которыми я работаю, в основном, как следующий очень сжатый фрагмент:
// Helpers.cs
public static class Helpers
{
public static void DoSomething() {}
public static void DoSomethingElse() {}
}
Конкретные методы, которые я рассмотрел,
- в основном не связаны друг с другом,
- без явного состояния сохраняется через вызовы,
- маленький и
- каждый потребляется различными не связанными типами.
Изменить: выше не предназначен, чтобы быть списком предполагаемых проблем. Это список общих характеристик конкретных методов, которые я рассматриваю. Это контекст, чтобы помочь ответам предоставить более актуальные решения.
Только для этого вопроса я буду называть этот тип метода GLUM (общий легкий метод утилит). Негативный оттенок "мрачность" отчасти предназначен. Я извиняюсь, если это выглядит как тупой каламбур.
Даже если оставить в стороне мой собственный скептицизм по умолчанию в отношении GLUM, мне не нравятся следующие вещи по этому поводу:
- Статический класс используется исключительно как пространство имен.
- Статический идентификатор класса в принципе не имеет смысла.
- Когда добавляется новый GLUM, либо (a) к этому классу «bag» прикасаются без веской причины, либо (b) создается новый класс «bag» (который сам по себе обычно не является проблемой; что плохо, так это то, что новый статические классы часто просто повторяют проблему несвязанности, но с меньшим количеством методов).
- Мета-именование неотвратимо ужасно, нестандартное, и , как правило , внутренне противоречива, будь то
Helpers
,Utilities
или что угодно.
Каков достаточно хороший и простой способ для рефакторинга этого, предпочтительно для решения вышеупомянутых проблем, и, предпочтительно, с как можно более легким прикосновением?
Я, наверное, должен подчеркнуть: все методы, с которыми я имею дело, попарно не связаны друг с другом. Кажется, не существует разумного способа разбить их на более мелкозернистые, но все же многосоставные пакеты методов класса.