Как стать автором
Обновить

Рефакторинг функций расширения в Kotlin: использование объекта-компаньона

Время на прочтение7 мин
Количество просмотров7K
Всего голосов 17: ↑16 и ↓1+15
Комментарии4

Комментарии 4

А не проще рядом с экстеншен функцией объявить интерфейс BiometricsUtils и его реализацию BiometricsUtilsImpl (с внедрением зависимостей через конструктор), а потом проект шаг за шагом переводить с экстеншена на интерфейс?

Имею в виду, что на каждом шаге заменять использования extension на interface в нескольких классах и их юнит тестах. И выкатывать пулл-реквест.

Думаю и правда проще. Но я пошел именно этим путём, чтобы показать удобную фишку с companion object : BiometricsUtils , благодаря которой можно опустить два последних шага и не добавлять BiometricsUtilsImpl вообще, оставив значение по-умолчанию в конструкторе.

Мне кажется, или вы просто замаскировали синглтон интерфейсом?

Просто заменили extension на интерфейс с реализацией, было бы идеально проектировать именно так изначально, так как тестирование этих extension функций еще та "радость".

Зарегистрируйтесь на Хабре, чтобы оставить комментарий