J'ai tiré le terme nommant Schtroumpf d' ici (numéro 21). Pour sauver ceux qui ne connaissent pas le problème, nommer un Schtroumpf consiste à préfixer un groupe de classes, variables, etc., avec un préfixe commun, de sorte que vous obtenez "a SmurfAccountView
passe a SmurfAccountDTO
à SmurfAccountController
", etc.
La solution que j'ai généralement entendue est de créer un espace de noms smurf et de supprimer les préfixes de smurf. Cela m'a généralement bien servi, mais je rencontre deux problèmes.
Je travaille avec une bibliothèque avec une
Configuration
classe. Il aurait pu être appelé,WartmongerConfiguration
mais il se trouve dans l'espace de noms WartmongerConfiguration
. De même, j'ai uneConfiguration
classe qui pourrait être appeléeSmurfConfiguration
, mais c'est dans l'espace de noms du Schtroumpf, donc ce serait redondant. Il y a des endroits dans mon code oùSmurf.Configuration
apparaît à côtéWartmonger.Configuration
et où taper des noms complets est maladroit et rend le code moins lisible. Il serait plus agréable de traiter avec aSmurfConfiguration
et (si c’était mon code et non une bibliothèque)WartmongerConfiguration
.J'ai une classe appelée
Service
dans mon espace de noms Schtroumpf qui aurait pu s'appelerSmurfService
.Service
est une façade située au-dessus d’une bibliothèque de schtroumpfs complexe exécutant des tâches Schtroumpf.SmurfService
semble être un meilleur nom carService
sans le préfixe de Schtroumpf, il est incroyablement générique. Je peux accepter queSmurfService
c’était déjà un nom générique, inutile, et enlever le schtroumpf ne faisait que rendre cela plus évident. Mais il aurait pu être nomméRunner
,Launcher
etc., et cela me "sentirait encore" mieuxSmurfLauncher
car je ne sais pas ce queLauncher
fait un , mais je sais ce queSmurfLauncher
fait un . On pourrait faire valoir que ce qu’unSmurf.Launcher
fait devrait être aussi apparent queSmurf.SmurfLauncher
`Smurf.Launcher est en quelque sorte une classe liée à l’installation plutôt qu’une classe qui lance des schtroumpfs.
S'il existe un moyen ouvert et fermé de traiter l'un ou l'autre de ces problèmes, ce serait formidable. Si non, quelles sont les pratiques courantes pour atténuer leur contrariété?
SmurfJob
s ou les exécute techniquement pour être cohérent avec le langage de la documentation Smurf. À la lumière de cela et les autres réponses, je vais renommer SmurfService
à SmurfJobRunner
. Il semble que le numéro 1 n’ait pas la meilleure résolution agnostique que prévu. Je peux voir des cas où aller avec SmurfConfiguration
serait le bon appel, mais dans mon cas, je pense que Configuration
c'est mieux, même avec les tracas de Wartmonger.Configuration
.
Smurf.Configuration
et se SmurfConfiguration
sentir différent? Ce n'est sûrement pas le personnage supplémentaire, n'est-ce pas? (Raccourcissez Config
si la longueur est le problème.) Avez- Smurf.Configuration
vous des problèmes qui SmurfConfiguration
ne le font pas?
Smurf.Launcher
des Schtroumpfs ou lance-t-ilSmurfJob
? Peut-être pourrait-il s'appelerSmurf.JobLauncher
?