Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Legacy code - methodology

Legacy code - methodology

Rostyslav Druzhchenko

Alexander Saenko

December 07, 2019
Tweet

More Decks by Alexander Saenko

Other Decks in Programming

Transcript

  1. Rostyslav Druzhchenko - 15 лет в разработке мобильных приложений -

    Широкий опыт работы с iOS проектами - от крошечных до огромных - Более 7 лет опыта работы как Team Lead https://www.facebook.com/rostyslav.druzhchenko https://github.com/drrost https://www.linkedin.com/in/rostyslav-druzhchenko/ https://medium.com/@dr_rost
  2. Plan - Определение термина “Legacy” - Немного теории и немного

    философии - Методики работы с legacy кодом - Выводы - Вопросы
  3. Определение термина “Legacy” - Код, который вы получили от кого-то

    (наследство) - Код, который трудно понимать и сложно вносить изменения - Код, написанный под уже не поддерживаемую операционную систему или технологию (Wikipedia) - Код без тестов (Michael C. Feather)
  4. Предпосылки - Вносить изменения в код долго и сложно -

    Внесённые изменения приводят к возникновению новых проблем - Никто не хочет работать с этим кодом - Новые разработчики долго входят в проект
  5. Зачем? - Добавление проекту коммерческой стоимости - Повышение своего профессионального

    уровня - Произвести впечатление на заказчика/тимлида/работодателя/коллег - Повышение своего дохода - Просто, потому что нравится - Что нибудь ещё...
  6. Когда это делать не надо - Когда и так всё

    хорошо - Когда никто об этом не просит и не хочется - Когда это явно запрещено - На краткосрочных проектах
  7. Основная идея работы с legacy кодом - внесение изменений должно

    быть быстрым и не приводить к появлению новых проблем.
  8. - Спросите разрешения на внесение изменений - Примите на себя

    ответственность за код, с которым вы работаете Прежде чем приступить
  9. Существует “правильный” подход к написанию кода и созданию архитектуры приложения

    Не бывает правильно/неправильно, бывает удобно/неудобно Миф #1
  10. Можно сначала написать документацию, потом дизайн, потом бекенд, а потом

    приступить к написанию iOS части Так не бывает. Миф #2
  11. - Исправляйте форматирование (скобочки, пробелы, и т.п.) - Удаляйте закомментированный

    код - Переименование “плохих” сущностей - Настройте CI/CD - Применяйте утилиты для автоформатирования - Swiftlint, Clang Техники: “бесплатные”
  12. - Разносите код по методам - Сокращайте код (не в

    ущерб читаемости) - Выносите код в extension-ы - MVC aka Massive View Controller - Создавайте утилиты (random, trim, JSON, notification) Техники: “почти безопасные”
  13. - Разбивайте зависимости - Выносите зависимости в конструкторы - Создавайте

    интерфейсы - Разносите код по классам - Пишите тесты - Выделяйте слои - Multilayer Architecture Техники: дорогие
  14. - Создавайте свои техники - Не берите больше одной-двух техник

    в проработку - Записывайте правила (wiki, md файл, пр.) - Приняв правило, следуйте ему - Не пытайтесь сделать ВСЁ идеально сразу Техники работы с техниками
  15. - Выберите простую технику - Техника должна быть понятной -

    Начните прямо сейчас - Выполняйте технику в течении недели каждый день - Если стало скучно, смените технику или возьмите дополнительную Как начать?
  16. - Делайте код “своим” (own your code) - Берите на

    себя ответственность (за свои действия и их последствия) - Дисциплина - ключ к успеху Выводы