Ho estratto il termine smurf naming da qui (numero 21). Per salvare qualcuno che non ha familiarità con il problema, la denominazione Smurf è l'atto di prefisso a un gruppo di classi correlate, variabili, ecc. Con un prefisso comune così si finisce con "un SmurfAccountView
passa un SmurfAccountDTO
a SmurfAccountController
", ecc.
La soluzione che ho sentito in generale è di creare uno spazio dei nomi smurf e rilasciare i prefissi smurf. Questo in genere mi è servito bene, ma sto incontrando due problemi.
-
Sto lavorando con una libreria con una classe
Configuration
. Potrebbe essere stato chiamatoWartmongerConfiguration
ma è nello spazio dei nomi Wartmonger, quindi è chiamatoConfiguration
. Anch'io ho una classeConfiguration
che potrebbe essere chiamataSmurfConfiguration
, ma è nello spazio dei nomi Smurf in modo che sia ridondante. Ci sono dei posti nel mio codice in cuiSmurf.Configuration
appare accanto aWartmonger.Configuration
e la digitazione di nomi completi è goffa e rende il codice meno leggibile. Sarebbe più carino gestire unSmurfConfiguration
e (se fosse il mio codice e non una libreria)WartmongerConfiguration
. -
Ho una classe chiamata
Service
nel mio spazio dei nomi Smurf che avrebbe potuto essere chiamataSmurfService
.Service
è una facciata in cima a una libreria Smurf complessa che esegue lavori Smurf.SmurfService
sembra un nome migliore perchéService
senza il prefisso Smurf è così incredibilmente generico. Posso accettare cheSmurfService
era già un nome generico e inutile e portare via lo smurf ha semplicemente reso questo più evidente. Ma potrebbe essere stato chiamatoRunner
,Launcher
, ecc. E sarebbe ancora "mi sento meglio" comeSmurfLauncher
perché non so cosa faccia unLauncher
, ma so cosaSmurfLauncher
lo fa. Potresti obiettare che ciò che unSmurf.Launcher
dovrebbe essere altrettanto evidente diSmurf.SmurfLauncher
, ma potrei vedere 'Smurf.Launcher essere una sorta di classe correlata all'impostazione piuttosto che una classe che lancia smurfs.
Se esiste un modo aperto e chiuso per gestire uno di questi, sarebbe fantastico. In caso contrario, quali sono alcune pratiche comuni per mitigare il loro fastidio?