Search
Write a publication
Pull to refresh
4
0
Роман Романов @goblinr

Android tech lead

Send message

С утилитками есть проблема, их нужно устанавливать на конкретное окружение CI/CD. С плагином для Gradle ничего устанавливать не нужно, получается что утилита генерации changelog встроена в систему сборки.

Разработчики языка Kotlin, сделали классы по умолчанию — final. И это было сделано не просто так. На мой взгляд, лучше придерживаться агрегации, композиции при расширении функционала какого-то класса, нежели наследования. Поэтому, хорошей практикой является закрытие класса на расширение через final, а если нужно расширить — то можно прибегнуть к паттерну "декоратор", но этот паттерн уже подразумевает выделение интерфейса для класса.

Представь ситуацию, когда <что-то с весьма незначительной вероятностью>

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

Представьте что SomeApifinal класс, такой метод уже замокать не получится. Ну и это считается дурным тоном — мокать конкретные реализации.

Я часто встречаю от новичков некоторое сопротивление, в плане того, что как раз много кода приходится писать. Для них чем меньше кода — тем проще.
Спасибо за комментарий.

Результат непосредственно зависит от архитектуры, а разработка по сути стандартна

В статье как раз говорится про разработчиков, которые в принципе не сталкивались с таким процессом разработки, в котором есть автоматизированный pipeline со статическими анализаторами, тестами, quality gates, и пр. На моей практике, я очень редко встречал android проекты, которые попали мне из других рук, и где был бы написан хотя бы один тест. И эти проекты, в принципе, не пригодны к автоматическим тестам. Если бы, в таких проектах было бы требование покрытия кода тестами, их архитектура однозначно бы изменилась в сторону усложнения.

Т.е. требования к процессу разработки — реально влияют на то, какой будет архитектура проекта.

Information

Rating
Does not participate
Location
Ижевск, Удмуртия, Россия
Date of birth
Registered
Activity