TGViewer
Мобильная разработка #1 Мобильная разработка #1 @developer_mobila · 3.81K subscribers
Post #1717 827
🍝 Ваш код похож на спагетти? Синдром «Божественного объекта»

Знакомая картина: открываешь проект, заходишь в MainActivity или ProfileViewController, а там... 1500 строк кода. 😱

Там и работа с сетью, и валидация полей, и анимации, и сохранение в базу, и даже форматирование даты. В мире разработки это называется God Object (или Massive View Controller).

Почему это плохо?

1. Невозможно тестировать. Как написать юнит-тест на класс, который делает всё?
2. Сложно менять. Поправил верстку — сломалась база данных.
3. Конфликты при слиянии. В команде двое разработчиков полезли в этот файл — здравствуй, merge conflict на полдня.

🚀 Как лечить (Гайд для перехода в Middle):

Если видишь класс больше 300-400 строк, начинай «резню»:

1. ✂️ Всю логику сети - в Repository.
Во View/Activity не должно быть http-клиентов и JSON-парсинга. Она должна просто сказать: repository.getUsers() и показать спиннер.

2. ✂️ Всю бизнес-логику - в UseCases (Интеракторы).
Валидация пароля, подсчет корзины, фильтрация списков - это чистая логика. Выносите её в отдельные классы (PasswordValidator, CartCalculator).

3. ✂️ Сложный UI - в Custom Views / Child ViewControllers.
Если у вас в адаптере списка 500 строк кода настройки ячеек - вынесите ячейку в отдельный класс с методом bind(data).

💡 Правило одной ответственности (SRP):
Класс должен иметь только одну причину для изменения.

🔵Если дизайнер поменял цвет кнопок - меняем только View.
🔵Если бэкенд поменял формат JSON, меняем только DTO/Repository.
🔵Если эти изменения заставляют вас править один и тот же файл, у вас архитектурная проблема.

🏁 Задание на неделю:
Найдите самый «жирный» класс в своем проекте и попытайтесь вынести из него хотя бы одну функцию в отдельный вспомогательный класс. Ваш код скажет вам спасибо.

Сколько строк в самом большом файле вашего текущего проекта? Пишите честно 👇

#architecture #cleanCode #refactoring #middle #android #ios

👉 @developer_mobila
  • ❤ 3
  • 👍 1
  • 🤡 1
  • 🥱 1
More from @developer_mobila
  1. Sep 14, 2026Как разрабатывать приложения для iPhone на iPad Звучит как противоречие: iPad стал вполне…
  2. Aug 24, 2026🧪 Как заставить XCUITest работать с интерфейсом глубиной более 100 уровней Инженеры Циана…
  3. Jul 25, 2026🚀 Подборка полезных IT каналов в Max Системное администрирование, DevOps 📌 https://max.r…
  4. Jul 8, 2026🕵️‍♂️ «Я спрятал ключ в константу»: Как Джуны дарят доступы хакерам Вы интегрировали крут…
  5. Jun 25, 2026👾 Androguard: Швейцарский нож для реверс-инжиниринга Android Если вы занимаетесь пентесто…
  6. Jun 22, 2026Живой космос на Metal: как я переписывал фон мобильной игры и поднимал FPS с 20 до 120 В м…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →