23 апреля 2018 2789

Привет! Пришло время очередной заметки в регулярно нерегулярном блоге о мобильной разработке. Сегодня я хочу затронуть тему рефакторинга, технического долга и пресловутого фактора “так исторически сложилось”, вернее, как этого избежать.

Привет! Пришло время очередной заметки в регулярно нерегулярном блоге о мобильной разработке. 

Сегодня я хочу затронуть тему рефакторинга, технического долга и пресловутого фактора “так исторически сложилось”, вернее, как этого избежать.

Всегда, особенно после ударных и задорных спринтов разработки, у разработчиков наступает период осознания и принятия произошедшего. Решения, принятые на скорую руку, вызывают споры на кофепоинтах, да или просто в комментах при ревью пулл-реквестов.

 Почему так может быть:
  • из-за отсутствия технического планирования;
  • невнятных требований бизнес-аналитиков;
  • непостоянства взглядов и целей бизнеса;
  • необходимости “все просто сделать в срок”.
Как с этим бороться, чтобы успевать в срок и менджмент выделял время? Никак.
Старайтесь следовать техникам, которые вас не приведут в такую ситуацию.  Ниже я поделюсь тем, что помогает мне.

Держите ваш огород в чистоте, соблюдайте санитарные нормы, автоматически

Можно много и долго говорить о код стандартах, спорить о табах или пробелах, не актуальности MVC и срочной необходимости внедрить MVVM. Это все здорово, но можно начать с того, чтобы внедрить:

  • LeakCanary – следить за утечками памяти;
  • StrictMode – следить за длительными операциями, не закрытыми курсорами и т.д.
Хотя бы в каждый из ваших debug-билдов, уже сейчас. И вам не надо будет совершать ударных подвигов во вторую смену, в ночь перед релизом отлавливать утечки по памяти или вострячить фикс после релиза.

KISS my SOLID YAGNI

Пожалуй, если бы мы играли в bulls**t bingo poker, это было бы заявкой на роял флэш. Можно говорить о многих принципах и паттернах в разработке, но все это разговоры до тех пор, пока вы не начали работать по каким-то правилам. 

Начните придерживаться хоть какой-нибудь общей архитектуры в проекте, это потом вам даст возможность:
  • провести рефакторинг;
  • или залатать дыры в одинаковом ключе во всем проекте; 
  • это даст возможность всем членам команды работать над всеми компонентами без исключений, без разделения на эксклюзивное авторство.
Просто возьмите за правило делать простые кастомные Android Views с объявлением и реализацией необходимых методов через interfaces. 

На ровне с этим начните реализовывать Presenters, которые оперируют с View через интерфейс. Напишите простейшие тесты на View и Presenter. Код получится простой и нарезанный на слои.
Слои в архитектуре нужны не для того, чтобы сотрудники, подобно геологам, изучали проект по слоям и изломам, как он исторически складывался, а для того чтобы разделять логику UI от логики обработки данных.

Начните писать тесты, но это уже было в Симпсонах предыдущем параграфе

Просто начните с самого простого и малого, например действительно ли отображается прогресс бар, когда View просят это сделать, действительно ли строчка такая, какую мы установили. 

Это все нужно для того, чтобы делать smoke-тесты вашего промышленного изделия. Текущее положение дел вынуждает производить поставки софта с невероятной скоростью, что создает высокое давления на проектные команды. Понизьте давление и уровень стресса, создавая простые тесты. 

Вы будете знать наверняка и потратите меньше времени на дебагинг, прогнав тесты там, где подтравливают баги.

Все асинхронно, синхронности в 21 веке не существует

Начните воспринимать каждое событие, каждую функцию как потенциальный источник асинхронных событий в вашей системе. 

Освойте Rx Java/Swift/JS, просто начните использовать реактивный подход, перекладывание с потока на поток еще никогда не было таким лаконичным. Это позволит сделать ваш код устойчивым к изменяемым требованиям, дополнительным взаимодействиям с сервером или сделает вас готовым к той самой «пятнице», когда серверная команда поменяет протокол – вы просто добавите Rx цепочку дополнительное действие и всё, “релизная” пятница спасена.

Составьте карту состояний

Да, я знаю, возможно это уже было в этом блоге, но, я не могу пройти мимо. Ваша программа, это по сути набор состояний идущих друг за другом. Облегчите себе и другим жизнь – договоритесь с отделом тестирования о всех возможных состояниях.

Используйте StateMachines, учтите по максиму все, приготовьтесь к тому, что ожидается, и приправьте это дело скепсисом относительно внешних факторов – отсутствие сети, не адекватность ответа сервера, ведь там тоже работают программисты, только серверные.

Это даст вам читать ваш код как набор тезисов и утверждений, но никак многострочную прозу, на основании сюжетной линии которой необходимо принимать решения, в зависимости от десятка флажков, нет, так не бывает. В одной из следующих статей я приведу пример конечного автомата для Android.

Аппарат вызываемого абонента...

Да, именно так, разрабатывайте приложение с учетом того, что сетевое соединение может пропасть в любой момент, а лучше примите это за данность: соединение пропадет именно сейчас. 

Вы будете готовы к тому, что заказ не отправлен, http-запрос не прошел.

Впустите Dependency Injection в гости к вашему проекту

Во-первых, вы можете разделять и распараллеливать работу. А еще, возможно, делать разработку, пока какие-то компоненты не готовы - делать стабы на мокнутых компонентах. А еще можно создавать моки будто нам отвечает неадекватный сервер и использовать все это богатство как в тестах, так и в приложении. 

Dependency Injection дает вам инфраструктуру для проведения без болезненных рефакторингов и экспериментов с реализациями.  

Dagger 2 и Toothpick для этого отлично подходят на Android-проекте.

Иван, это все вода, ты пример покажи

Возможно, текст получился излишне научно-популярным, без избытка технических деталей, но в интернете уже полно статей про то, как следовать какому-либо паттерну. Задача же, которую я ставлю перед собой, – это озвучить реальные проблемы и последствия и объяснить, во что это выливается в жизни.

А что касается примера, вот здесь можно посмотреть на часть концепций затронутых в данном тексте: http://github.com/vanatka/funwithinterfaces 

К сожалению, как пелось в песне группы "2 самолета, жизнь" очень сложная штука, а для того чтобы ее облегчить, надо следовать правилам, которые будут ограждать от проблем и никогда не идти на компромиссы ради сиюминутной выгоды.

Спасибо, искренне ваш, капитан очевидность.

https://www.youtube.com/watch?v=aHLfyWfeATk 

Последние статьи в блоге

Искусственный архитектор: как нейросети справляются с проектированием ПО

В этой статье расскажем про большие языковые модели в приложении к работе архитектора ПО. Вместе мы посмотрим, насколько хорошо GPT понимает ИТ-архитектуру и сможет ли уже сегодня заменить архитектора. Пора разобраться, насколько глубоко ИИ может встроиться в рабочие процессы архитектора ПО — и стоит ли ему там оставаться.

Новости
24 апреля 2026

Бабушка с долгом в полмиллиона, однопоточное ядро и другие грабли: как не повторить чужие архитектурные ошибки

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

Новости
16 апреля 2026

Как защитить информацию в приложениях, использующих ИИ

Представим, что системы контроля и анализа транзакций в банке начинают игнорировать 30% мошеннических операций. Система управления энергосетью выводит из строя ключевой узел подачи электроэнергии в город. Чат-бот службы поддержки начинает массово раскрывать персональные данные клиентов. К сожалению, это новая реальность, с которой может столкнуться любая компания, интегрирующая ИИ-системы в бизнеспроцессы.

Новости
08 апреля 2026

Java без розовых очков: какие знания отделяют грейды

Почти каждый разработчик рано или поздно задается вопросом: «Я уже Middle или все еще уверенный Junior?» Опыт растет, задач становится больше, стек шире — но вместе с этим появляется и иллюзия, что раз ты пишешь на Java каждый день, значит, язык знаешь.

Новости
23 марта 2026

ИИ против джуна: как победить нейросети при устройстве на работу

Начинающим разработчикам и раньше было непросто найти первую работу, а сейчас и подавно: конкуренция выросла кратно, а рынок окончательно стал «рынком работодателя».

11 марта 2026

Мартовский апгрейд: обновляем компетенции со скидкой 20% и приятными бонусами

Март — традиционное время не только для обновления природы, но и для профессионального роста. С 1 по 31 марта 2026 года у нас действует акция «Мартовский апгрейд».

05 марта 2026

Февраль 2026: Разбираем тренды, прокачиваем архитектуру и учимся договариваться с ИИ. Бесплатные вебинары для ИТ-специалистов

Февраль — месяц, когда уже видны цели на год, но еще есть время скорректировать курс и зарядиться новыми знаниями.

Новости
06 февраля 2026

Как ИТ-компании могут компенсировать до 10 млн ₽ на обучении сотрудников в 2026 году

Как аккредитованный учебный центр, специализирующийся на подготовке ИТ-специалистов, мы не только проводим программы дополнительного профессионального образования, но и помогаем корпоративным клиентам корректно оформить документы для участия в программе «Субсидия на обучение сотрудников» Департамента предпринимательства и инновационного развития города Москвы. В этой статье — структурированный обзор условий, требования к компаниям и сотрудникам, а также как мы можем помочь вам при подаче заявки.

Жизнь компании
20 января 2026

Архитекторы vs Рутина: Как открытый вебинар за 2 недели превратился в кастомный ИИ-интенсив

В Учебном центре IBS мы регулярно проводим бесплатные вебинары для ИТ-специалистов. Это наша философия — делиться реальными знаниями, а не просто давать рекламу. Один из таких вебинаров, посвященный практическому применению ИИ в инженерии, посетили сотрудники крупной компании — лидера в спортивном ритейле.

12 января 2026

Чистая выдумка: Как придумать класс, которого нет, и спасти проект от хаоса

Знакомо: вы описываете требования, рисуете сущности — Клиент, Заявка, Документ… А потом система превращается в «комок» с сильной связанностью (big ball of mud), где любое изменение стоит как полпроекта?

Новости
16 декабря 2025

Федеральное признание: нашу программу по системному анализу признали лучшей ИТ-программой в стране

Программа Учебного центра IBS «Системный аналитик. Уровень Специалист» признана лучшей ИТ-программой онлайн-обучения в России по итогам премии «СМАРТ ПИРАМИДА — 2025»!

16 декабря 2025

Бизнес-аналитик 2.0: как меняется профессия и какие навыки теперь нужны

Когда-то бизнес-аналитик ассоциировался с человеком, который «пишет ТЗ». Сегодня этого явно недостаточно. Современный БА — это стратег, коммуникатор и системный мыслитель, который одинаково уверенно чувствует себя в бизнес-контексте и технических деталях. Чтобы не застрять в прошлом, важно понимать, как эволюционирует роль аналитика и какие компетенции становятся критически важными.

Новости
05 декабря 2025

Обратная сторона Event-Driven: Почему Мартин Фаулер призывает к осторожности?

Вы узнаете один из 4 ключевых паттернов EDA и поймете, как избежать главной ловушки, в которую попадают многие команды.

Новости
25 ноября 2025

Скидка 30% на 8 курсов декабря

Год близится к завершению, и пока другие подводят итоги, вы можете сделать самую выгодную инвестицию — в себя. Мы собрали 8 курсов со скидкой 30%*, которые стартуют в начале декабря, чтобы вы могли точно успеть пройти обучение до конца года и прийти к новым карьерным целям с обновлённым стеком технологий.

Новости
20 ноября 2025

Осенний апдейт карьеры: от -30% до -50% на курсы ноября!

Только сейчас: скидки от 30% до 50%* на ноябрьские курсы для тех, кто хочет быть на шаг впереди в IT. Практические программы помогут укрепить ключевые навыки и выйти на новый уровень профессиональной зрелости. Успейте подать заявку, чтобы воспользоваться предложением.

Новости
23 октября 2025

Как одновременно заварить кофе для 10 000 сотрудников — и еще 7 неожиданных вопросов архитектору ПО

Как убедить заказчика отказаться от Excel, зачем архитектору опыт кодинга и почему эволюция ПО похожа на эволюцию живых существ?

Новости
21 октября 2025

Как живые вебинары повышают эффективность ИТ-обучения

ИТ-рынок сегодня меняется стремительнее, чем когда-либо: появляются новые технологии, фреймворки и подходы.

Новости
06 октября 2025

ИИ в разработке ПО: преимущество или риск

Инструменты на базе искусственного интеллекта все чаще используются при создании программного обеспечения. Рассмотрим, какие задачи помогает решать ИИ и какие опасности несет

Новости
24 сентября 2025

Чему нас учит ИИ: как стать идеальным сотрудником

Сейчас чаще говорят об этике использования ИИ — как не получить плагиат или не доверить слишком много, но при этом редко задумываются о другой стороне медали: этична ли наша работа?

Новости
12 сентября 2025

Как ИИ действительно влияет на продуктивность разработчика: неожиданные выводы из исследований

За последние пару лет у многих разработчиков в редакторах и IDE поселились новые «напарники» — всевозможные ИИ-инструменты. Обещания были впечатляющие: меньше рутины, быстрее релизы, код пишется почти сам. Но когда первые восторги улеглись и появились системные исследования, стало ясно: эффект от ИИ далеко не такой однозначный. Где-то он действительно ускоряет работу команд на 20%, а где-то, наоборот, тормозит опытных инженеров. И вот парадокс: даже там, где выигрыш в скорости очевиден, бизнес не всегда чувствует, что проекты двигаются быстрее.

Новости
08 сентября 2025

Нужна помощь? Оставьте заявку, и мы свяжемся с вами в ближайшее время

Согласен получать на e-mail информационные рассылки о новостях Учебного центра IBS
Корпоративное обучение Оценка персонала Сертификация О нас Стать тренером Блог Личный кабинет
Пользователь только что записался на курс ""
Спасибо!
Форма отправлена успешно.