Я вытащил отсюда термин «смурф» (номер 21). Чтобы избавить кого-то, кто не знаком с проблемой, именование Smurf - это префикс префикса группы связанных классов, переменных и т. Д. С общим префиксом, так что в итоге вы получаете «a SmurfAccountView
pass a SmurfAccountDTO
to SmurfAccountController
» и т. Д.
Решение, которое я обычно слышал, заключается в создании пространства имен smurf и отбрасывании префиксов smurf. В целом это хорошо мне помогло, но я сталкиваюсь с двумя проблемами.
Я работаю с библиотекой с
Configuration
классом. Его можно было бы назвать,WartmongerConfiguration
но он находится в пространстве имен Wartmonger, поэтому он просто называетсяConfiguration
. У меня также естьConfiguration
класс, который можно вызыватьSmurfConfiguration
, но он находится в пространстве имен Smurf, поэтому он будет избыточным. В моем коде есть места, гдеSmurf.Configuration
появляется рядом,Wartmonger.Configuration
и ввод полностью определенных имен неуклюж и делает код менее читабельным. Было бы лучше иметь дело с aSmurfConfiguration
и (если бы это был мой код, а не библиотека)WartmongerConfiguration
.В
Service
моем пространстве имен Smurf есть класс, который можно было бы вызватьSmurfService
.Service
это фасад на вершине сложной библиотеки Smurf, которая выполняет задания Smurf.SmurfService
кажется лучшим именем, потому чтоService
без префикса Smurf это невероятно универсально. Я могу признать, что этоSmurfService
было уже общее, бесполезное имя, и удаление смарфа просто сделало это более очевидным. Но его можно было бы назватьRunner
иLauncher
т. Д., И мне все равно было бы «легче»,SmurfLauncher
потому что я не знаю, что онLauncher
делает, но я знаю, что онSmurfLauncher
делает. Вы можете утверждать, что то, чтоSmurf.Launcher
делает, должно быть столь же очевидно, какSmurf.SmurfLauncher
, но я мог видеть, что Smurf.Launcher - это некий класс, связанный с настройкой, а не класс, запускающий smurfs.
Если есть открытый и закрытый способ справиться с любым из них, это было бы здорово. Если нет, каковы некоторые распространенные практики, чтобы смягчить их раздражение?
SmurfJob
s или технически запускает их в соответствии с языком документации Smurf. В свете этого и других ответов я собираюсь переименовать SmurfService
в SmurfJobRunner
. Кажется, номер 1 не имеет лучшего разрешения, как я ожидал. Я могу видеть случаи, когда подход SmurfConfiguration
был бы правильным решением, но в моем случае я думаю, что Configuration
это лучше, даже несмотря на трудности Wartmonger.Configuration
.
Smurf.Configuration
и SmurfConfiguration
чувствуешь себя иначе? Конечно, это не дополнительный символ, не так ли? (Сократите до, Config
если проблема в длине.) Есть ли Smurf.Configuration
проблемы, которых SmurfConfiguration
нет?
Smurf.Launcher
запуск Smurfs, или это запуститьSmurfJob
S? Возможно, это можно назватьSmurf.JobLauncher
?