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

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


person Donuts    schedule 14.06.2013    source источник


Ответы (2)


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

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

person Donuts    schedule 14.06.2013

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

person Bijou Trouvaille    schedule 02.02.2015