Size: a a a

AUG for Developers

2021 February 05

it

ilya turov in AUG for Developers
всем привет, есть наброс на вечер пятницы
вот пишу я в своем плагине сервис, и хочу там использовать условный issueManager
чутье говорит мне, что кошерно заинджектить его в конструктор моего сервиса
лень - что ComponentAccessor.getIssueManager() тоже прекрасно справится
чуется, что второй вариант менее верный, но не понимаю почему
у кого-то есть хорошее объяснение?
источник

A

Alexandr in AUG for Developers
ну вообще если в конструктор передается интерфейс, есть возможность передать несколько его реализаций, в зависимости от контекста. так же можно в тестах "замокать". в случае ComponentAccessor.getIssueManager()  реализация прибита гвоздями. это скорее общее правило, в данном случае наверное не принципиально
источник

it

ilya turov in AUG for Developers
но вот в описании CA написано:

Normally, developers should get the dependencies injected into the constructor of the calling class by Pico; however, this utility provides access for when that is impossible or impractical.Examples include:
...
* Static-only utility classes, which are never constructed at all
источник

it

ilya turov in AUG for Developers
это тогда превращается в вопрос про "Static-only utility classes"
чем полноценные бины лучше? (и лучше ли?)
источник

AC

Anton Chemlev in AUG for Developers
Один из принципов - зависимости должны быть явными
источник

A

Alexandr in AUG for Developers
если учитывать, что java - это все же про ООП, тогда статик утилсами не стоит злоупотреблять, наверное. но вообще это полуфилософский вопрос
источник

AC

Anton Chemlev in AUG for Developers
+
источник

it

ilya turov in AUG for Developers
то есть ответ "потому что ооп и солид"?
источник

it

ilya turov in AUG for Developers
потому что бест практис
источник

M

Max in AUG for Developers
Если коротко то да
источник

it

ilya turov in AUG for Developers
ладно, спасибо за ответы
источник

AM

Alexey Matveev in AUG for Developers
ilya turov
ладно, спасибо за ответы
Тебе же Alexandr правильно ответил
источник

it

ilya turov in AUG for Developers
ну так я и говорю спасибо
источник

it

ilya turov in AUG for Developers
просто я сам это чую, но объяснить нормально не могу
источник

AM

Alexey Matveev in AUG for Developers
ilya turov
ну так я и говорю спасибо
Ок
источник

it

ilya turov in AUG for Developers
это было "спасибо" не в виде "толку от вас", а в обычном виде 🙄
источник

AD

Alexey Dorofeev in AUG for Developers
Alexey Matveev
Тебе же Alexandr правильно ответил
какой из ответов правильный, про интерфейсы, или ооп?
источник

AM

Alexey Matveev in AUG for Developers
Alexey Dorofeev
какой из ответов правильный, про интерфейсы, или ооп?
Вот этот ну вообще если в конструктор передается интерфейс, есть возможность передать несколько его реализаций, в зависимости от контекста. так же можно в тестах "замокать". в случае ComponentAccessor.getIssueManager()  реализация прибита гвоздями. это скорее общее правило, в данном случае наверное не принципиально
источник

AM

Alexey Matveev in AUG for Developers
За исключением не принципиально конечно)
источник

AM

Alexey Matveev in AUG for Developers
Последнее предложение нужно исключить
источник