Wyciągnąłem stąd termin nazywanie smerfa (numer 21). Aby zaoszczędzić każdemu, kto nie zna problemu, nazewnictwo Smurf polega na prefiksowaniu szeregu powiązanych klas, zmiennych itp. Wspólnym przedrostkiem, aby uzyskać „a SmurfAccountView
przechodzi SmurfAccountDTO
na SmurfAccountController
” itd.
Rozwiązaniem, o którym ogólnie słyszałem, jest utworzenie przestrzeni nazw smurf i upuszczenie przedrostków smurf. To ogólnie mi dobrze służyło, ale mam dwa problemy.
Pracuję z biblioteką z
Configuration
klasą. Można go było nazwać,WartmongerConfiguration
ale znajduje się w przestrzeni nazw Wartmonger, więc po prostu się nazywaConfiguration
. Mam równieżConfiguration
klasę, którą można nazwaćSmurfConfiguration
, ale znajduje się ona w przestrzeni nazw Smurf, więc byłoby to zbędne. W moim kodzie są miejsca, w którychSmurf.Configuration
pojawia się obok,Wartmonger.Configuration
a wpisywanie w pełni kwalifikowanych nazw jest nieporęczne i sprawia, że kod jest mniej czytelny. Lepiej byłoby poradzić sobie zSmurfConfiguration
a (gdyby to był mój kod, a nie biblioteka)WartmongerConfiguration
.Mam klasę nazwaną
Service
w mojej przestrzeni nazw Smurf, którą można by nazwaćSmurfService
.Service
jest fasadą na złożonej bibliotece Smurf, która obsługuje zadania Smurf.SmurfService
wydaje się lepszą nazwą, ponieważService
bez przedrostka Smurf jest tak niesamowicie ogólny. Mogę zaakceptować, żeSmurfService
była to już ogólna, bezużyteczna nazwa, a zabranie smerfa tylko to uwidoczniło. Ale to mogło być nazwaneRunner
,Launcher
itp i nadal będą „czuć się lepiej” mi sięSmurfLauncher
, bo nie wiem, coLauncher
robi, ale wiem, że to, coSmurfLauncher
robi. Można argumentować, że to, coSmurf.Launcher
robi, powinno być tak samo oczywiste jakSmurf.SmurfLauncher
, ale widziałem, że `Smurf.Launcher jest rodzajem klasy związanej z konfiguracją, a nie klasą, która uruchamia smerfy.
Jeśli istnieje otwarty i zamknięty sposób radzenia sobie z jednym z nich, byłoby świetnie. Jeśli nie, jakie są typowe praktyki ograniczania ich irytacji?
SmurfJob
s lub technicznie uruchamia je, aby były zgodne z językiem dokumentacji Smurf. W świetle tej i innych odpowiedzi zamierzam zmienić nazwę SmurfService
na SmurfJobRunner
. Wydaje się, że numer 1 nie ma najlepszej agnostycznej rozdzielczości językowej, jak się spodziewałem. Widzę przypadki, w których pójście SmurfConfiguration
byłoby właściwym telefonem, ale w moim przypadku myślę, że Configuration
najlepiej nawet z kłopotami Wartmonger.Configuration
.
Smurf.Configuration
i SmurfConfiguration
czujesz się inaczej? Z pewnością to nie jest dodatkowy char, prawda? (Skróć do, Config
jeśli problemem jest długość.) Czy Smurf.Configuration
masz jakieś problemy, które SmurfConfiguration
nie?
Smurf.Launcher
uruchamia smerfy, czy uruchamiaSmurfJob
s? Być może można to nazwaćSmurf.JobLauncher
?