Нещодавно я переглядав декілька статичних класів «допоміжних мішків» у стилі помічника, що плавають навколо деяких великих C # баз кодів, з якими я працюю, в основному такі речі, як наступний дуже ущільнений фрагмент:
// Helpers.cs
public static class Helpers
{
public static void DoSomething() {}
public static void DoSomethingElse() {}
}
Я розглядав конкретні методи
- переважно не пов'язані між собою,
- без явного стану, що зберігається через виклики,
- малий, і
- кожне споживається різними непов'язаними типами.
Редагувати: вищезазначене не призначене для переліку передбачуваних проблем. Це перелік загальних характеристик конкретних методів, які я переглядаю. Це контекст, щоб допомогти відповідям запропонувати більш відповідні рішення.
Тільки для цього питання я буду називати цей метод як GLUM (загальний легкий корисний метод). Частково призначена негативна конотація "похмурості". Вибачте, якщо це трапляється як тупий каламбур.
Навіть відкладаючи власний скептицизм щодо GLUM-файлів за замовчуванням, мені не подобаються такі речі з цього приводу:
- Статичний клас використовується виключно як простір імен.
- Статичний ідентифікатор класу в основному безглуздий.
- Коли додається новий GLUM, або (a) цього класу "сумки" не торкаються без поважних причин, або (b) створюється новий клас "мішок" (що саме по собі зазвичай не є проблемою; що погано, що новий статичні класи часто просто повторюють проблему непов'язаності, але з меншою кількістю методів).
- Мета-іменування невідворотно жахливо, нестандартне, і , як правило , внутрішньо суперечлива, будь то
Helpers,Utilitiesабо що завгодно.
Що є досить хорошим та простим шаблоном для рефакторингу цього, бажано вирішити вищезазначені проблеми та, бажано, як можна легше торкнутися?
Я, мабуть, повинен підкреслити: Усі методи, з якими я маю справу, попарно не пов'язані один з одним. Здається, не існує розумного способу розбити їх на тонкозернисті, але все ще багатомісні статичні методи-пакети.
