Eu tenho um monte de métodos que são comumente usados em todos os lugares. No momento, o codefile é chamado globals, para representar o fato de que eles são ... de fato ... globais.
No entanto, eu não gosto disso.
Quero agrupá-los em uma classe e passar uma interface. Vou fazer apenas uma instância, mas não estou caindo na armadilha singleton aqui.
Primeiro de tudo, como devo nomear a classe. Quero evitar o nome global porque receio que os mantenedores tenham uma idéia errada.
Além disso, como devo considerar dividir esse conjunto de métodos para que o comportamento possa mudar e se adaptar?
O conjunto de métodos contém coisas como:
- Tabelas de conversão
- Interação da área de transferência
- Gerenciando fontes construídas
- Métodos comuns de desenho
- Fornecendo uma interface com acesso a recursos frequentemente usados
Respostas:
O espaço para nome pode ser
[application].Common.Shared
As classes podem ser nomeadas:
Eu terminaria as aulas porque parece que eles fazem coisas diferentes.
fonte
Se você vai fazer uma instância, você tem praticamente um singleton. Além disso, o que as pessoas normalmente se refeririam se falassem sobre uma armadilha de singleton é que os singletons são globais, e é melhor que a maioria das classes não seja global. Então você também pode ter um singleton. Se você pode razoavelmente passar uma interface para objetos que podem querer chamá-la, ela não é realmente global.
Além disso, colocar tudo isso em um só saco de métodos globais dificulta a mudança e a adaptação do comportamento, pois não apenas cada alteração em um método exige uma nova subclasse, mas cada combinação de alterações precisaria de sua própria subclasse.
Eu recomendaria ter singletons para cada um que seja verdadeiramente global (acreditarei que todos são) e algum tipo de registro ou fábrica que fornece uma instância (o que significa que você pode implementar como singleton ou não, pois a interface será não faça promessas). Eu os nomearia com base no que eles fazem da perspectiva do interlocutor.
fonte
Normalmente, eu coloco esses tipos de coisas em seus próprios nomes de assembly, como "foo.Common" em espaços para nome como "foo.Common.Collections" ou "foo.common.UI" etc. etc., então, posso referenciar o assembly em qualquer projeto Eu preciso deles.
fonte