Recentemente, eu estava revisando algumas classes estáticas da "bolsa de utilidade" do estilo Helper flutuando em torno de algumas grandes bases de código C # com as quais trabalho, basicamente como o seguinte trecho muito condensado:
// Helpers.cs
public static class Helpers
{
public static void DoSomething() {}
public static void DoSomethingElse() {}
}
Os métodos específicos que revi são
- principalmente não relacionados entre si,
- sem estado explícito persistido através de invocações,
- pequeno e
- cada um consumido por uma variedade de tipos não relacionados.
Edit: O item acima não pretende ser uma lista de supostos problemas. É uma lista de características comuns dos métodos específicos que estou revisando. É um contexto para ajudar as respostas a fornecer soluções mais relevantes.
Apenas para esta pergunta, vou me referir a esse tipo de método como um GLUM (método geral de utilitário leve). A conotação negativa de "triste" é parcialmente pretendida. Me desculpe se isso parece um trocadilho idiota.
Mesmo deixando de lado meu ceticismo padrão sobre GLUMs, não gosto das seguintes coisas sobre isso:
- Uma classe estática está sendo usada apenas como um espaço para nome.
- O identificador de classe estática é basicamente sem sentido.
- Quando uma nova GLUM é adicionada, (a) essa classe "bolsa" é tocada sem um bom motivo ou (b) uma nova classe "bolsa" é criada (o que por si só não costuma ser um problema; o ruim é que a nova classes estáticas frequentemente repetem o problema de falta de relação, mas com menos métodos).
- A meta-nomeação é inevitavelmente horrível, não-padrão e, normalmente, internamente inconsistentes, se é
Helpers,Utilitiesou o que quer.
Qual é um padrão razoavelmente bom e simples para refatorar isso, de preferência abordando as preocupações acima e de preferência com o mínimo de toque possível?
Eu provavelmente deveria enfatizar: todos os métodos com os quais estou lidando não são pareados entre si. Não parece haver uma maneira razoável de decompô-los em sacos de métodos estáticos de granulação mais fina e ainda com vários membros.
