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 SmurfAccountViewpasse 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
Configurationclasse. Il aurait pu être appelé,WartmongerConfigurationmais il se trouve dans l'espace de noms WartmongerConfiguration. De même, j'ai uneConfigurationclasse 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.Configurationapparaît à côtéWartmonger.Configurationet où taper des noms complets est maladroit et rend le code moins lisible. Il serait plus agréable de traiter avec aSmurfConfigurationet (si c’était mon code et non une bibliothèque)WartmongerConfiguration.J'ai une classe appelée
Servicedans mon espace de noms Schtroumpf qui aurait pu s'appelerSmurfService.Serviceest une façade située au-dessus d’une bibliothèque de schtroumpfs complexe exécutant des tâches Schtroumpf.SmurfServicesemble être un meilleur nom carServicesans le préfixe de Schtroumpf, il est incroyablement générique. Je peux accepter queSmurfServicec’é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,Launcheretc., et cela me "sentirait encore" mieuxSmurfLaunchercar je ne sais pas ce queLauncherfait un , mais je sais ce queSmurfLauncherfait un . On pourrait faire valoir que ce qu’unSmurf.Launcherfait 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é?
SmurfJobs 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 SmurfConfigurationserait le bon appel, mais dans mon cas, je pense que Configurationc'est mieux, même avec les tracas de Wartmonger.Configuration.
Smurf.Configurationet se SmurfConfigurationsentir différent? Ce n'est sûrement pas le personnage supplémentaire, n'est-ce pas? (Raccourcissez Configsi la longueur est le problème.) Avez- Smurf.Configurationvous des problèmes qui SmurfConfigurationne le font pas?
Smurf.Launcherdes Schtroumpfs ou lance-t-ilSmurfJob? Peut-être pourrait-il s'appelerSmurf.JobLauncher?