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

Рефакторинг в Python

Рефакторинг в Python

Алексей Кузьмин (технический руководитель, Domclick) @ Moscow Python Meetup 71
"Рефакторинг — это то, что надо периодически проводить с любым проектом, иначе он станет неподдерживаемым. Python дает нам возможность превратить сложный, большой и уродливый репозиторий в образец краткости и лаконичности, который будет понятен с первого взгляда и легко сопровождаем.
В докладе я постараюсь дать свои советы и рекомендации по тому, как проводить подобный рефакторинг. В частности я расскажу вам о:
⁃ Быстрых победах — что в целом надо сделать, что повысить качество создаваемого кода
⁃ Паттернах и антипаттернах — как хорошо делать хорошо, и как плохо делать плохо
⁃ Ну и немного поговорим о философских вопросах и подходах к разработке☺
Доклад будет полезен начинающим и миддл-разработчикам, особенно в преддверии новогодних праздников — когда можно будет неспеша применить полученные знания на практике".
Видео: http://www.moscowpython.ru/meetup/71/python-refactoring/

Moscow Python Meetup

December 26, 2019
Tweet

More Decks by Moscow Python Meetup

Other Decks in Programming

Transcript

  1. ОБО МНЕ АЛЕКСЕЙ КУЗЬМИН • ДИРЕКТОР РАЗРАБОТКИ В ДОМКЛИК •

    РУКОВОЖУ НАПРАВЛЕНИЕМ МАШИННОГО ОБУЧЕНИИ И РАБОТЫ С ДАННЫМИ • В СВОБОДНОЕ ВРЕМЯ ПРЕПОДАЮ =) • @ALEX_KUZMIN • [email protected]
  2. ДОМКЛИК • ЕДИНЫЙ ПОРТАЛ НЕДВИЖИМОСТИ И ИПОТЕЧНОГО КРЕДИТОВАНИЯ СБЕРБАНКА •

    БЫСТРАЯ, КОМФОРТНАЯ И БЕЗОПАСНАЯ АЛЬТЕРНАТИВА ТРАДИЦИОННОЙ ИПОТЕЧНОЙ СДЕЛКЕ • НАДЕЖНЫЕ И ПОЛЕЗНЫЕ СЕРВИСЫ • ДРУЖНАЯ И ВЕСЕЛАЯ КОМАНДА • HTTPS://TEAM.DOMCLICK.RU
  3. О ЧЕМ ПОГОВОРИМ • ЧТО ТАКОЕ РЕФАКТОРИНГ И КОДА ЕГО

    СТОИТ ПРОВОДИТЬ • КАК ПОВЫСИТЬ КАЧЕСТВО КОДА БЫСТРО ПРИ ПОМОЩИ ИНСТРУМЕНТОВ • АНТИПАТТЕРНЫ В КОДЕ • ПАТТЕРНЫ, ПОМОГАЮЩИЕ С РЕФАКТОРИНГОМ • ОБЩИЕ ПРИНЦИПЫ
  4. РЕФАКТОРИНГ • РЕФАКТОРИНГ — ЭТО КОНТРОЛИРУЕМЫЙ ПРОЦЕСС УЛУЧШЕНИЯ КОДА, БЕЗ

    НАПИСАНИЯ НОВОЙ ФУНКЦИОНАЛЬНОСТИ. • РЕЗУЛЬТАТ РЕФАКТОРИНГА — ЭТО ЧИСТЫЙ КОД И ПРОСТОЙ ДИЗАЙН.
  5. ЛИНТЕРЫ • ПРОВЕРЯЮТ КОД НА СЛЕДОВАНИЕ ПРАВИЛАМ • ПРОСТЫЕ -

    ТОЛЬКО СТИЛЬ • СЛОЖНЫЕ – ЕЩЕ И СЕМАНТИКУ
  6. PYLINT • УТИЛИТА ДЛЯ PYTHONA • ПРОВЕРЯЕТ: • СТАНДАРТЫ (ДЛИНА

    СТРОК, НАЗВАНИЯ ПЕРЕМЕННЫХ, ИСПОЛЬЗОВАНИЕ МОДУЛЕЙ) • ОШИБКИ (ИМПОРТИРОВАНЫ ЛИ НУЖНЫЕ МОДУЛИ, ИСПОЛЬЗОВАНИЕ ДО ОБЪЯВЛЕНИЯ И ТП) • ПОИСК ДУБЛИРОВАНИЯ КОДА • ВСТРАИВАЕТСЯ В IDE (VSCODE, PYCHARM И ТД) • ПОДДЕРЖКА CI/CD
  7. АВТОФОРМАТТЕРЫ • BLACK • AUTOPEP8 • YAPF • НЕКОТОРЫЕ ГОВОРЯТ,

    ЧТО BLACK БЫСТРЕЕ (HTTPS://MEDIUM.COM/@BOXED/A-QUICK- PERFORMANCE-COMPARISON-OF-PYTHON-CODE-FORMATTERS-3A89478DA8B8) • В ЦЕЛОМ, ГЛАВНОЕ, ЧТОБЫ БЫЛ
  8. ИНСТРУМЕНТЫ: ИТОГИ • ПРИВОДЯТ ВСЕ К ЕДИНООБРАЗНОМУ СТИЛЮ – МЕНЬШЕ

    ОБСУЖДЕНИЙ НА РЕВЬЮ • ПОЗВОЛЯЮТ БОЛЬШЕ ДУМАТЬ О ПРОБЛЕМАХ, А НЕ О ПЕРЕНОСАХ СТРОК • БЫСТРЫЙ ТОЛЧОК В КАЧЕСТВЕ КОДА • ИМЕННО «ТОЛЧОК», ПОТОМУ ЧТО КОРНЕВЫЕ ПРОБЛЕМЫ ОСТАЮТСЯ НЕ РЕШЕННЫМИ
  9. COPY AND PASTE PROGRAMMING • ФУНКЦИОНАЛЬНАЯ ДЕКОМПОЗИЦИЯ • НЕ БОЙТЕСЬ

    МЕТОДОВ, КОТОРЫЕ ВЫЗЫВАЮТСЯ РОВНО В ОДНОМ МЕСТЕ
  10. БЕЗДУМНОЕ КОММЕНТИРОВАНИЕ # КОЛИЧЕСТВО ОБЪЕКТОВ OBJECTS_COUNT = 5 • ПРИ

    ЭТОМ ПОДУМАЙТЕ, КАК ВСЁ-ТАКИ ПРОКОММЕНТИРОВАТЬ • КОММЕНТИРУЕШЬ – ДУМАЙ!
  11. PROGRAMMING BY PERMUTATION • # НЕ ЗНАЮ, КАК ЭТО РАБОТАЕТ.

    НЕ УДАЛЯТЬ И НЕ МЕНЯТЬ!!! • РАЗБЕРИТЕСЬ • ПЕРЕПИШИТЕ, НАКОНЕЦ!
  12. BIG BALL OF MUD • СПАГЕТТИ КОД • ГРАФ ЗАВИСИМОСТИ

    МЕЖДУ КЛАССАМИ ПОЧТИ ПОЛНЫЙ
  13. GOLDEN HAMMER • ЛУЧШИЙ ПАТТЕРН – OBSERVER! • CARGO CULT

    PROGRAMMING – ИСПОЛЬЗОВАНИЕ ПАТТЕРНОВ БЕЗ НЕОБХОДИМОСТИ И ПОНИМАНИЯ
  14. ИНТЕРФЕЙС • ИЩЕМ СТАНДАРТНЫЙ ИЛИ ЧАСТЫЕ СЦЕНАРИИ ИСПОЛЬЗОВАНИЯ КОДА •

    ИЩЕМ ОСНОВНЫЕ «СТРОИТЕЛЬНЫЕ БЛОКИ» • СОЗДАЕМ ИНТЕРФЕЙС • ПОДДЕРЖИВАЕМ EDGE-CASES ЗА СЧЁТ СПЕЦИАЛИЗАЦИИ
  15. ФАСАД • «НЕЛЬЗЯ ПРОСТО ТАК ВЗЯТЬ И СДЕЛАТЬ ХОРОШИЙ КОД»

    • ОБОРАЧИВАЕМ СУЩЕСТВУЮЩИЙ КОД В ФАСАД, СКРЫВАЯ РЕАЛИЗАЦИЮ ОТ ИСПОЛЬЗОВАНИЯ • УПРАВЛЯЕМ СЛОЖНОСТЬЮ, ЗА СЧЕТ ПРЕДОСТАВЛЕНИЯ ПРОСТОГО ИНТЕРФЕЙСА К СЛОЖНОЙ ПОДСИСТЕМЕ
  16. АНТИПАТТЕРНЫ И ПАТТЕРНЫ - ИТОГИ • КОД НИКОГДА НЕ БЫВАЕТ

    ХОРОШИМ, ОСОБЕННО ЕСЛИ КОДОВАЯ БАЗА АКТИВНО РАСТЕТ • НЕЛЬЗЯ ПРОСТО ВЗЯТЬ ВСЕ И ПЕРЕПИСАТЬ • ПОСТЕПЕННОЕ УЛУЧШЕНИЕ
  17. НАПИСАНИЕ КОДА • КОД БОЛЬШЕ ЧИТАЮТ, ЧЕМ ПИШУТ • ЛУЧШИЙ

    КОД МОЖЕТ БЫТЬ ЛЕГКО ПЕРЕПИСАН БЕЗ УСИЛИЙ • БЫСТРЫЕ ПРАВКИ НЕ НЕСУТ СТАБИЛЬНОСТИ • «ОН РАБОТАЛ ДО СИХ ПОР, ПУСТЬ РАБОТАЕТ И ДАЛЬШЕ» • ПОСТЕПЕННЫЕ ИЗМЕНЕНИЯ
  18. DRY, KISS, YAGNI • DRY - DON’T REPEAT YOURSELF •

    KISS - KEEP IT STUPID SIMPLE • YAGNI - YOU AREN’T GONNA NEED IT