Соглашения об именах интерфейсов Java [закрыто]

Я работаю над веб-приложением Java, которое использует Spring для внедрения зависимостей и JMock для моделирования этих зависимостей в наших модульных тестах.

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

Причина, по которой у нас есть такие интерфейсы, исключительно для имитации, например, у нас есть службы и репозитории, которые мы макетируем в наших модульных тестах, и эти службы будут называться «DocumentMappingService» или для репозиториев «EmployeeRepository». В настоящее время некоторые из парней просто добавляют префикс имени соответствующего интерфейса к «I», то есть «IDocumentMappingService» и «IEmployeeRepository». Другие называют интерфейс как у меня выше, а затем добавляют «Impl» после имени интерфейса для реализующего класса.

Третья «фракция» считает, что оба эти варианта плохие. Глядя на такую литературу, как хорошо известное «Растущее объектно-ориентированное программное обеспечение, управляемое тестами», можно было бы полагать, что оба вышеупомянутых варианта плохие и что имя интерфейса должно четко определять контракт и имя реализующих классов. следует четко указать, как этот контракт был реализован. Мы обнаружили, что это довольно сложно сделать в случае, о котором я упоминал выше.

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

Ответы на вопрос(2)

Ваш ответ на вопрос