Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Соглашение об именах трейтов Scala, когда трейт совпадает с классом

Автор вопроса: DonutsОтветов: 2

Мне нужно создать трейт для моего класса исключительно для внедрения зависимостей для моих модульных тестов. Я действительно не предвижу каких-либо других реализаций этого трейта - просто нужно заглушить его для модульных тестов. Скажем, мой класс называется "Foo"... в .NET я бы назвал свой интерфейс "IFoo". Какое соглашение люди используют для этого случая?

scalatraitsnamingconvention

Ответы

Ответ 1 · рейтинг 3 · Donuts

Когда существует только одна реализация трейта, имеет смысл использовать соглашение "Impl": trait = Foo и class = FooImpl. Хотя я никогда не был поклонником этого соглашения, потому что оно как бы ограничивает одну реализацию, похоже, это именно то, что мне здесь нужно.

Чем больше классов реализуют интерфейс/признак, тем более вероятно, что именование каждой реализации будет проходить более естественно.

Ответ 2 · Bijou Trouvaille

В шаблоне активатора для akka-spray используется схема инъекции "сделай сам". Они называют один из его основных интерфейсов Core, а его реализацию RunCore. Кажется, они предлагают придумать описательное имя для реализации в зависимости от ее предполагаемого использования, а не просто impl. После этого вы назовете свой макет TestCore.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы