Сообщество разработчиков Java Scala Kotlin Groovy Clojure Чат для нач-их: @javastart Наш канал: @proJVM Вакансии: @jvmjobs @jvmjobschat ⚠️ Оффтоп -> @flood ❌Переход на личности ❌Троллинг ❌Реклама ❌HH (вакансии) ❌Варез
Возможно, просто еще одна из причин использовать интерфейсы
Читать полностью…экономия на спичках, не?
спринг не компилирует -> разница будет для раздутых приложений как оптимизация скорости старта и, может быть, перегруженных сценариев, но и только
Это практика для начинающих разработчиков в основном, так проще выделить контракт. Если ты можешь сразу писать сервис, понимая, что нужно минимизировать связность в приложении, такой подход не нужен
Читать полностью…Ну а как ещё воссоздавать конкретные ответы от зависимости, кроме как через when then?
Читать полностью…че реакции понаставили. Интересно услышать вашу точку зрения
Читать полностью…Не лезь 🤷
Ты сейчас у себя в голове какие-то аргументы придумал, никого в них не посвятил
И пытаешься общаться
И как это помешает? Рефакторинг с выделением интерфейса идея сама прекрасно сделает
Читать полностью…надо реализацию не?, смысла в Mockito.when(<service>.<method>).thenReturn() нет
Читать полностью…ну появится вторая, тогда можно рефакторнуть, сильно работы не увеличится
Читать полностью…наверн в компании просто платят за количество интерфейсов в коде🤷♂️
Читать полностью…Вы что тестируете: контракт или каждую отдельную его реализацию?
Читать полностью…Создайте свой абстрактный класс, который будет передавать в предка уже заготовленные параметры, при наследовании от него передавать их снова уже не потребуется
Читать полностью…Так, условно, если у тебя зависимость UsersService, то ты ему можешь этот мок присвоить? Или тип всё же другой?
Читать полностью…Кроме того, что выше написали про контракты и тестирование:
- если использовать интерфейсы, Spring для создания прокси сможет применять Dynamic Proxy, встроенную в Java, тогда код будет легче и производительнее.
- если делать классы, Spring переключается на CGLIB, который сложнее, требует больше ресурсов и внешнюю либу. При этом CGLIB не работает с final-классами, для которых запрещено наследование.
Так что использование интерфейсов помогает Spring работать более оптимально.
Есть понятие "Testability", оно подразумевает что когда пишем код нужно думать о том как его будем тестировать.
Читать полностью…Если вы это мокаете, значит это вы не тестируете, значит это заменяется заглушкой. А раз оно не являетя объектом тестирования - то откуда взялся вопрос про реализации? Странно.
Читать полностью…Если только стопицот зависимых друг от друга сервисов к тому моменту не появятся...
Читать полностью…не понимаю зачем сразу выделять интерфейс, если имплементация будет скорее всего одна
Читать полностью…Это базовые знания ООП. Неважно, это ваш код или Minecraft, или другой библиотеки. Вы просто создайте абстрактную реализацию самого Block.
public abstract class DefaultBlock extends Block {Читать полностью…
public DefaultBlock() {
super(...);
}
// TODO: ...
}
Если речь идёт о том, чтобы Block
реализовывал абстрактный класс AbstractBlock
, то такой вариант недопустим, так как класс Block
является частью кода библиотеки, на основе которой я пишу свой проект.
Если интерфейс нужен для тестирования, то получается , что это размазывание тестовой инфраструктуры по всему приложению 🧐
Читать полностью…