Middle+
32
0
questionbank

Что ты считаешь плохим в коде и что бы ты хотел сразу заменить?

Ответ от нейросети sobes.tech
  • Глобальные переменные (val, var на уровне объекта, к которым много прямого доступа).
  • Использование lateinit var без особой нужды (предпочтительнее nullable val или инициализация).
  • Длинные, сложные функции (более 10-15 строк бизнес-логики).
  • Отсутствие или недостаточность тестов (юнит-тесты, инструментальные).
  • Дублирование кода (copy-paste).
  • Жесткая связанность компонентов (Class A напрямую создает/использует Class B вместо использования DI или интерфейсов).
  • Недостаточные комментарии для неочевидных частей кода.
  • Отсутствие обработки ошибок или использование пустых catch блоков.
  • Зависимость от конкретных реализаций вместо абстракций (например, прямое использование Context в ViewModel).
  • Неоптимальное использование коллекций (например, frequent list manipulations instead of sets/maps).
  • Игнорирование рекомендаций линтера (Checkstyle, Detekt).

Я бы сразу заменил:

  • Использование findViewById на View Binding или Data Binding.
  • Прямое использование AsyncTask на Coroutines, RxJava или WorkManager.
  • Ручное управление жизненным циклом (например, добавление/удаление слушателей в onResume/onPause) на Ktx-extensions или Lifecycle-aware компоненты.
  • Использование старых подходов к навигации на Navigation Component.
  • Использование Bundle для передачи сложных объектов между активностями/фрагментами на Safe Args, Parcelize или сериализацию.
kotlin
  • Глобальные переменные (val, var на уровне объекта, к которым много прямого доступа).
  • Использование lateinit var без особой нужды (предпочтительнее nullable val или инициализация).
  • Длинные, сложные функции (более 10-15 строк бизнес-логики).
  • Отсутствие или недостаточность тестов (юнит-тесты, инструментальные).
  • Дублирование кода (copy-paste).
  • Жесткая связанность компонентов (Class A напрямую создает/использует Class B вместо использования DI или интерфейсов).
  • Недостаточные комментарии для неочевидных частей кода.
  • Отсутствие обработки ошибок или использование пустых catch блоков.
  • Зависимость от конкретных реализаций вместо абстракций (например, прямое использование Context в ViewModel).
  • Неоптимальное использование коллекций (например, frequent list manipulations instead of sets/maps).
  • Игнорирование рекомендаций линтера (Checkstyle, Detekt).

Я бы сразу заменил:

  • Использование findViewById на View Binding или Data Binding.
  • Прямое использование AsyncTask на Coroutines, RxJava или WorkManager.
  • Ручное управление жизненным циклом (например, добавление/удаление слушателей в onResume/onPause) на Ktx-extensions или Lifecycle-aware компоненты.
  • Использование старых подходов к навигации на Navigation Component.
  • Использование Bundle для передачи сложных объектов между активностями/фрагментами на Safe Args, Parcelize или сериализацию.
kotlin

Зарегистрируйтесь или войдите, чтобы получить доступ к полным ответам на все вопросы из банка вопросов.

code-qualityrefactoringtechnical-debtbad-practicesreadabilitymaintainability