Именование интерфейса и репозитория в PHP и Laravel

Я работаю с шаблоном репозитория и интерфейсами в Laravel и считаю, что имена слишком многословны: UserRepositoryInterface или EventRepositoryInterface. Используются ли другие менее подробные соглашения об именах? Я хочу, чтобы мой код оставался читаемым для будущих программистов. В DDD некоторые предлагали называть UserRepositoryInterface просто Users или AllUsers, подробнее здесь: репозиторий и сервисные интерфейсы?.


person dwenaus    schedule 22.07.2014    source источник


Ответы (2)


"Хороший" способ назвать ваш интерфейс должен быть UserRepository.

При реализации класса с использованием интерфейса вы заключаете контракт: этот класс будет использовать UserRepository. Не интерфейс, а реальный репозиторий.

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

Вы должны назвать свои реализации, чтобы отразить их особенности: например, EloquentUserRepository для репозитория на основе Eloquent.

Нет смысла иметь DefaultUserRepository. Ни одна из ваших реализаций не должна быть лучше другой и должна подвергаться специальной обработке.

Я написал «хорошо» в скобках, потому что, в конце концов, это скорее вопрос соглашения в вашей команде, и вы должны делать то, что работает для вас.

Вы можете прочитать больше на эту тему в этом интересном сообщении в блоге: http://verraes.net/2013/09/sensible-interfaces/

person SelrahcD    schedule 22.07.2014

Я предлагаю вам назвать интерфейс UserRepository и реализацию, например, EloquentUserRepository, MongoUserRepository и так далее. В настоящее время нет необходимости оставлять interface в имени интерфейса, когда большинство IDE могут мгновенно найти нужный файл.

person Mateusz Nowak    schedule 22.07.2014
comment
как насчет UserRepo и EloquentUserRepo? будет ли это считаться «стандартным» и читаемым? - person dwenaus; 23.07.2014