Diia code review. Обговорюємо якість коду
Нещодавно сталася подія, яка викликала жваві обговорення в українській ІТ-спільноті. Код державного застосунку «Дія» з’явився у вільному доступі на Github. Опубліковано код Back-End сервісів, написаних на TypeScript, а також код мобільних додатків для iOS і Android.
Розробники одразу ж почали пробувати розгортати опубліковані сервіси у себе локально, обговорювати код, створювати Issues і Pull requests із запропонованими змінами.
Але хочу обговорити реакцію ІТ-блогерів. Викладач і Node.js-ентузіаст Тимур Шемседінов на своєму YouTube-каналі опублікував відео з аналізом того, що було опубліковано, і коротким технічним code review.
Інший ІТ-блогер і програміст Ілля Климов організував онлайн-стрім, під час якого пробував розгорнути Back-End сервіси у себе локально.
Основні критичні моменти, які озвучив Тимур Шемседінов у своєму відео:
- Код опублікованих сервісів не має історії комітів. Складається враження, що певні сервіси були виокремлені звідкись і опубліковані без системного підходу. Відповідно, немає впевненості, що це саме актуальні версії сервісів, і що вони взагалі сумісні між собою.
- Хто оброблятиме пул реквести? У Мінцифри говорили про Open Source-підхід, а це передбачає активну взаємодію зі спільнотою. А зараз незрозуміло як розробники «Дії» планують обробляти цей великий потік issues і pull requests, який з’явився, адже на це потрібно багато ресурсів. Також немає налаштованого CI/CD, який міг би спростити процес обробки pull requests і автоматизовано перевіряти, чи пропоновані зміни нічого не ламають і чи не приносять більше проблем.
- Немає опублікованої схеми архітектури, щоб одразу зрозуміти, як ця велика кількість сервісів має взаємодіяти між собою. Є проблеми із підняттям оточення локально. Надана інформація не дозволяє це зробити самостійно без додаткових дій.
- Якість коду: у багатьох місцях порушені рівні абстракцій (наприклад, бізнес-логіка змішана з кодом роботи з базою даних), порушені принципи програмування (SOLID, GRASP і т. п.) а також місцями присутній овер інженіринг.
Далі у відео розглядаються приклади проблем із запропонованими рішеннями.
Ілля Климов зайняв більш м’яку позицію. Він сказав, що йому не подобається цей шквал критики, який навалився на команду «Дії». Він наголосив, що «Дія» — це насамперед enterprise-проєкт і це типово, що в проєктів такого типу якість коду може бути не ідеальною.
Крім того, репозиторії схожих застосунків зазвичай закриті і порівняти аналогічні продукти із «Дією» немає можливості. На якість коду може впливати дуже багато факторів і практично в кожному проєкті є баги і свої проблеми. В першу чергу, цей код працює і виконує свою роботу, незалежно від якості його написання. Враховуючи обмеженість ресурсів команди і специфіку роботи — це непоганий результат.
Ілля Климов пробував розгорнути у себе проєкт «Дії» локально (під час чотиригодинного стріму), але до кінця це зробити не вдалося. Він стикався із рядом проблем, як відсутність lock-файлів, що ускладнило встановлення залежностей, неспівпадіння версій між різними сервісами і відсутність деяких неопублікованих сервісів. Review ж коду «Дії» Ілля Климов пообіцяв зробити окремим відео.
8 коментарів
Додати коментар Підписатись на коментаріВідписатись від коментарів