Мне нужно создать трейт для моего класса исключительно для внедрения зависимостей для моих модульных тестов. Я действительно не предвижу каких-либо других реализаций этого трейта - просто нужно заглушить его для модульных тестов. Скажем, мой класс называется "Foo"... в .NET я бы назвал свой интерфейс "IFoo". Какое соглашение люди используют для этого случая?
Вопрос
Соглашение об именах трейтов Scala, когда трейт совпадает с классом
Ответы
Ответ 1 · рейтинг 3 · Donuts
Когда существует только одна реализация трейта, имеет смысл использовать соглашение "Impl": trait = Foo и class = FooImpl. Хотя я никогда не был поклонником этого соглашения, потому что оно как бы ограничивает одну реализацию, похоже, это именно то, что мне здесь нужно.
Чем больше классов реализуют интерфейс/признак, тем более вероятно, что именование каждой реализации будет проходить более естественно.
Ответ 2 · Bijou Trouvaille
В шаблоне активатора для akka-spray используется схема инъекции "сделай сам". Они называют один из его основных интерфейсов Core, а его реализацию RunCore. Кажется, они предлагают придумать описательное имя для реализации в зависимости от ее предполагаемого использования, а не просто impl. После этого вы назовете свой макет TestCore.
Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.
Похожие материалы
- Что такое функциональное программирование с точки зрения студента, часть II
- Представляем Reactive Lock для Scala
- Почему Scala - популярный язык программирования?
- Контроль и обработка ошибок в ZIO, Akka и Monix (часть 3) + обзор серии
- Как избежать циклических зависимостей при настройке свойств?
- Перенос интерфейса Java на трейт scala с помощью дженериков