Peguei o termo smurf nomeando daqui (número 21). Para salvar alguém que não conhece o problema, a nomeação Smurf é o ato de prefixar um monte de classes, variáveis etc. relacionadas com um prefixo comum, para que você acabe com "a SmurfAccountViewpassa a SmurfAccountDTOpara SmurfAccountController", etc.
A solução que geralmente ouvi sobre isso é criar um espaço para nome de smurf e soltar os prefixos de smurf. Isso geralmente me serviu bem, mas estou com dois problemas.
Estou trabalhando com uma biblioteca com uma
Configurationclasse. Poderia ter sido chamado,WartmongerConfigurationmas está no espaço de nomes do Wartmonger, por isso é chamadoConfiguration. Da mesma forma, tenho umaConfigurationclasse que poderia ser chamadaSmurfConfiguration, mas é no espaço para nome Smurf, portanto seria redundante. Há lugares no meu código em queSmurf.Configurationaparece ao ladoWartmonger.Configuratione digitar nomes totalmente qualificados é desajeitado e torna o código menos legível. Seria melhor lidar com aeSmurfConfiguration(se fosse meu código e não uma biblioteca)WartmongerConfiguration.Eu tenho uma classe chamada
Serviceno meu namespace Smurf que poderia ter sido chamadaSmurfService.Serviceé uma fachada no topo de uma complexa biblioteca Smurf que executa tarefas Smurf.SmurfServiceparece um nome melhor, porqueServicesem o prefixo Smurf é incrivelmente genérico. Eu posso aceitar queSmurfServicejá era um nome genérico, inútil, e tirar smurf apenas tornou isso mais aparente. Mas poderia ter sido nomeadoRunner,Launcheretc, e ainda me "sentiria melhor" comoSmurfLauncherporque não sei o queLauncherfaz, mas sei o queSmurfLauncherfaz. Você poderia argumentar que o que umSmurf.Launcherfaz deve ser tão aparente quanto umSmurf.SmurfLauncher, mas eu pude ver o `Smurf.Launcher sendo algum tipo de classe relacionada à instalação, em vez de uma classe que lança smurfs.
Se houver uma maneira aberta e fechada de lidar com qualquer uma dessas opções, isso seria ótimo. Caso contrário, quais são algumas práticas comuns para atenuar seu aborrecimento?
SmurfJobou executa tecnicamente para ser consistente com o idioma da documentação do Smurf. À luz disso e das outras respostas, vou mudar o nome SmurfServicepara SmurfJobRunner. Parece que o número 1 não possui uma melhor resolução independente de idioma, como eu esperava. Eu posso ver casos em que ir SmurfConfigurationseria a decisão certa, mas no meu caso, acho que Configurationé melhor mesmo com o incômodo de Wartmonger.Configuration.
Smurf.Configuratione se SmurfConfigurationsentir diferente? Certamente não é o char extra, é? (Reduza para Configse o comprimento é o problema.) Smurf.ConfigurationHá algum problema que SmurfConfigurationnão existe?
Smurf.LauncherSmurfs lançamento, ou ele lançarSmurfJobs? Talvez pudesse ser chamadoSmurf.JobLauncher?