Saqué el término pitufo de aquí (número 21). Para salvar a cualquiera que no esté familiarizado con el problema, el nombramiento de pitufos es el acto de prefijar un grupo de clases relacionadas, variables, etc. con un prefijo común para que termines con "a SmurfAccountViewpasa a SmurfAccountDTOa SmurfAccountController", etc.
La solución que generalmente he escuchado es crear un espacio de nombres de pitufo y soltar los prefijos de pitufo. En general, esto me ha servido bien, pero me encuentro con dos problemas.
Estoy trabajando con una biblioteca con una
Configurationclase. Podría haberse llamadoWartmongerConfigurationpero está en el espacio de nombres de Wartmonger, por lo que simplemente se llamaConfiguration. También tengo unaConfigurationclase que podría llamarseSmurfConfiguration, pero está en el espacio de nombres de Smurf, por lo que sería redundante. Hay lugares en mi código dondeSmurf.Configurationaparece juntoWartmonger.Configurationy escribir nombres completos es torpe y hace que el código sea menos legible. Sería mejor tratar con unaSmurfConfigurationy (si fuera mi código y no una biblioteca)WartmongerConfiguration.Tengo una clase llamada
Serviceen mi espacio de nombres Pitufo que podría haberse llamadoSmurfService.Servicees una fachada en la parte superior de una compleja biblioteca de pitufos que ejecuta trabajos de pitufos.SmurfServiceparece un nombre mejor porqueServicesin el prefijo Smurf es increíblemente genérico. Puedo aceptar queSmurfServiceya era un nombre genérico e inútil y eliminar el pitufo simplemente lo hizo más evidente. Pero podría haber sido nombradoRunner,Launcheretc. y todavía me "sentiría mejor"SmurfLauncherporque no sé quéLauncherhace, pero sé quéSmurfLauncherhace. Se podría argumentar que lo queSmurf.Launcherhace debe ser tan evidente como unSmurf.SmurfLauncher, pero pude ver que `Smurf.Launcher es algún tipo de clase relacionada con la configuración en lugar de una clase que lanza pitufos.
Si hay una manera abierta y cerrada de lidiar con cualquiera de estos, sería genial. Si no, ¿cuáles son algunas prácticas comunes para mitigar su molestia?
SmurfJobejecuta s, o técnicamente los ejecuta para que sean consistentes con el lenguaje de la documentación de Smurf. A la luz de eso y las otras respuestas, voy a cambiar el nombre SmurfServicea SmurfJobRunner. Parece que el número 1 no tiene una mejor resolución agnóstica de lenguaje como esperaba. Puedo ver casos donde ir con SmurfConfigurationsería la decisión correcta, pero en mi caso creo que Configurationes mejor incluso con la molestia de Wartmonger.Configuration.
Smurf.Configurationy SmurfConfigurationsentirse diferente? Seguramente no es el char extra, ¿verdad? (Reduzca a Configsi la longitud es el problema). ¿ Smurf.ConfigurationTiene algún problema que SmurfConfigurationno tenga ?
Smurf.LauncherLanza pitufos o lanzaSmurfJobs? Quizás podría llamarseSmurf.JobLauncher?