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 SmurfAccountView
pasa a SmurfAccountDTO
a 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
Configuration
clase. Podría haberse llamadoWartmongerConfiguration
pero está en el espacio de nombres de Wartmonger, por lo que simplemente se llamaConfiguration
. También tengo unaConfiguration
clase 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.Configuration
aparece juntoWartmonger.Configuration
y escribir nombres completos es torpe y hace que el código sea menos legible. Sería mejor tratar con unaSmurfConfiguration
y (si fuera mi código y no una biblioteca)WartmongerConfiguration
.Tengo una clase llamada
Service
en mi espacio de nombres Pitufo que podría haberse llamadoSmurfService
.Service
es una fachada en la parte superior de una compleja biblioteca de pitufos que ejecuta trabajos de pitufos.SmurfService
parece un nombre mejor porqueService
sin el prefijo Smurf es increíblemente genérico. Puedo aceptar queSmurfService
ya era un nombre genérico e inútil y eliminar el pitufo simplemente lo hizo más evidente. Pero podría haber sido nombradoRunner
,Launcher
etc. y todavía me "sentiría mejor"SmurfLauncher
porque no sé quéLauncher
hace, pero sé quéSmurfLauncher
hace. Se podría argumentar que lo queSmurf.Launcher
hace 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?
SmurfJob
ejecuta 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 SmurfService
a 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 SmurfConfiguration
sería la decisión correcta, pero en mi caso creo que Configuration
es mejor incluso con la molestia de Wartmonger.Configuration
.
Smurf.Configuration
y SmurfConfiguration
sentirse diferente? Seguramente no es el char extra, ¿verdad? (Reduzca a Config
si la longitud es el problema). ¿ Smurf.Configuration
Tiene algún problema que SmurfConfiguration
no tenga ?
Smurf.Launcher
Lanza pitufos o lanzaSmurfJob
s? Quizás podría llamarseSmurf.JobLauncher
?