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 ж коду «Дії» Ілля Климов пообіцяв зробити окремим відео.

А як вам код Дії? Дивились?

44%
21%
7%
24%
5%
148 голосів  ·  показати результати

Підписуйтеся на Telegram-канал «DOU #tech», щоб не пропустити нові технічні статті

👍ПодобаєтьсяСподобалось4
До обраногоВ обраному1
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Розчарована застосунком дія.Купила машину за 20000 оплатила продавцю і запит відхилили.Прошу пояснення розумних адвокатів як працює дія і для кого вона створена????

як працює дія

Як скаже федоров

для кого вона створена

для виборців пана презЕдента...

Я не думаю що призедент створив дію.Не потрібно звинувачувати одну людину!!!

Гарна новина для УКРАЇНЦІВ, тобто ми всі маємо слухати одного федорова

Код опублікованих сервісів не має історії комітів

Було б дивно якби там була вся історія комітів.
А так виклали обрізану версію (в андроід застосунку тільки 1 послуга була доступна і то не знаю працювала вона або ні).
Погрався трохи, почитав логи в консолі і забив ковбасу на це все діло.

Це ж для галочки було зроблено. очевидно що ніхто не буде цим займатися.

Тут відповіли що плануюють працювати з ком’юніті, але поки незрозуміло як це буде виглядати github.com/...​diia-setup-howto/issues/6

поки незрозуміло як це буде виглядати

Ніяк.
Вони ж прямо відповіли, що займатися цим не будуть.

Треба зрозуміти чи взагалі гра варта свічок,
то який нам сенс марнувати ресурси на такого рода взаємодію?

Підписатись на коментарі