Size: a a a

Software Design/Architecture/Zen

2020 October 30

СП

Сергей Предводителев... in Software Design/Architecture/Zen
про гитхаб - вполне аргумент.

Но если это не публичный проект и разработка идёт c помощью PhpStorm то почти все аргументы в пользу использования суффиксов в этой ситуации не состоятельны.
источник

СП

Сергей Предводителев... in Software Design/Architecture/Zen
Artur
Смысл вообще делать интерфейс если у тебя будет почти наверняка одна реализация. Или я ошибаюсь?)
чтобы абстрагироваться от реализации
источник

A

Artur in Software Design/Architecture/Zen
Сергей Предводителев
чтобы абстрагироваться от реализации
Что это тебе даёт в твоём проекте?) То есть просто чтобы было?
источник

СП

Сергей Предводителев... in Software Design/Architecture/Zen
Artur
Что это тебе даёт в твоём проекте?) То есть просто чтобы было?
Как минимум тестировать удобнее, я например делаю две реализации репозиториев: одну боевую на БД ,а другую для хранение в памяти, которая используется в тестах
источник

A

Artur in Software Design/Architecture/Zen
Сергей Предводителев
Как минимум тестировать удобнее, я например делаю две реализации репозиториев: одну боевую на БД ,а другую для хранение в памяти, которая используется в тестах
Понятно))
источник

R

Roman in Software Design/Architecture/Zen
Сергей Предводителев
Как минимум тестировать удобнее, я например делаю две реализации репозиториев: одну боевую на БД ,а другую для хранение в памяти, которая используется в тестах
Я так же делаю с недавних пор. Один минус — тестировать репозиторий боевой БД всё равно приходится:)
источник

СП

Сергей Предводителев... in Software Design/Architecture/Zen
Roman
Я так же делаю с недавних пор. Один минус — тестировать репозиторий боевой БД всё равно приходится:)
Да, конечно.

Но в других тестах где репозиторий этот есть, но тестируется не он, подключать БД долго и накладно, проще подкинуть заглушку в виде InMemoryRepository
источник

AP

Artem Prosvetov in Software Design/Architecture/Zen
Сергей Предводителев
Доброе утро!

Как считаете, имеет ли смысл для интерфейсов делать суффикс Interface?
Например, PostRepositoryInterface.
Я бы еще слово Repository убрал, просто Posts, а дальше RedisPosts, InMemoryPosts, DoctrinePosts
источник

СП

Сергей Предводителев... in Software Design/Architecture/Zen
Artem Prosvetov
Я бы еще слово Repository убрал, просто Posts, а дальше RedisPosts, InMemoryPosts, DoctrinePosts
Как минимум не всегда. Я вот сейчас делаю хранение файлов у меня есть FileRepositry  (в БД хранение информации о файле) и FileStorage (хранение собственно самих файлов).
источник

D

Dmitriy in Software Design/Architecture/Zen
DoctrineFiles, S3Files )
источник

СП

Сергей Предводителев... in Software Design/Architecture/Zen
Repository и Storage - используются одновременно и если я оба буду обзывать Files - не понятно что куда)
источник

АЯ

Андрей Ява in Software Design/Architecture/Zen
Сергей Предводителев
Я обычно использовал суффикс, но сейчас пришёл к тому, что это не имеет особого смысла.

PostRepository - используем там где нам нужен репозиторий постов.

А реализации называем уже исходя из самих реализаций:
InMemoryPostRepository, DoctrinePostRepository, ...
А если твой класс имплементит несколько интерфейсов, ты их в строчку будешь записывать?
источник

СП

Сергей Предводителев... in Software Design/Architecture/Zen
Андрей Ява
А если твой класс имплементит несколько интерфейсов, ты их в строчку будешь записывать?
нет зачем, назову по тому, что делает класс
источник

АЯ

Андрей Ява in Software Design/Architecture/Zen
Сергей Предводителев
нет зачем, назову по тому, что делает класс
Тогда у тебя в коде будет две стртегии наименования жить. По тому что делает и с суфиком интерейса.
источник

СП

Сергей Предводителев... in Software Design/Architecture/Zen
Андрей Ява
Тогда у тебя в коде будет две стртегии наименования жить. По тому что делает и с суфиком интерейса.
суфикс интерфейса только для интерфейсов

к реализациям интерфейсов это не имеет отношения.
источник

АЯ

Андрей Ява in Software Design/Architecture/Zen
Ну InMemory - PostRepository.
источник

АЯ

Андрей Ява in Software Design/Architecture/Zen
Под суфиксом я имею виду PostRepository
источник

АЯ

Андрей Ява in Software Design/Architecture/Zen
Вообще главное называть так, чтоб было понятно что это такое и что оно делает по назыанию.
Очень круто когда при этом у тебя классы называются одним-двумя словами максимум.
Но это уже требует правильного расположения класса
источник

SP

Sergey Protko in Software Design/Architecture/Zen
Сергей Предводителев
Доброе утро!

Как считаете, имеет ли смысл для интерфейсов делать суффикс Interface?
Например, PostRepositoryInterface.
Нет, нету смысла юзать суфиксы. Есть ряд исключений, например когда штука выражает не самый важный концепт. Контроллеры например
источник

СП

Сергей Предводителев... in Software Design/Architecture/Zen
Андрей Ява
Вообще главное называть так, чтоб было понятно что это такое и что оно делает по назыанию.
Очень круто когда при этом у тебя классы называются одним-двумя словами максимум.
Но это уже требует правильного расположения класса
InMemory - оно конечно, в рамках неймспейса может быть хорошо, если это в какому нибудь неймспейсе Post/Repository/. Но вот при использовании вполне возможно придется алиасы использовать, что не удобно.

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

PostRepository::class => InMemory::class,
CommentRepository::class => InMemory::class,


не выйдет, то есть будут алиасы:

PostRepository::class => InMemoryPostRepository::class,
CommentRepository::class => InMemoryCommentRepository::class,


То есть проще сразу назвать InMemoryPostRepository и InMemoryCommentRepository.
источник