TGViewer
Unity Architect: архитектура unity проектов Unity Architect: архитектура unity проектов @uniarchitect · 5.23K subscribers
Post #105 3.72K
КОГДА НУЖНО ЗАДУМЫВАТЬСЯ ОБ АРХИТЕКТУРЕ

Каждый раз, когда стартую свой новый проект, я думаю:
Так, а вот тут мне нужно сделать по грамоте и сразу продумать дизайн и архитектуру.
Или же делать как делается и будь как будет.

Казалось бы, всё индивидуально, и как говорит любой архитектор: "Зависит от контекста."😅

Но мы можем дать вполне рациональный ответ, если зададим 2 вопроса:

1️⃣ Сколько в проекте строк кода (LOC - Lines Of Code)?
Измерять LOC, придумали еще на заре разработки. Примерно в 70х.
Тогда просто брали сумму всех строк во всех файлах проекта.

Казалось бы что из этого можно сделать?
— А прикиньте есть модель COCOMO1, по которой можно предсказать стоимость проекта, время его разработки и кол-во человек в команду, указав только кол-во строк кода 🤯
Можете поиграться тут. Но я обязательно в будущем про это напишу!


Мы же хотим понять, от какого количества строк нам нужно начать думать про дизайн и архитектуру.
Тут консенсуса нет. Никто не замерял разницу в эффективности хаотичной и структурированной системы.

Например Wang в Software Engineering Foundations, которого я так часто цитирую предлагает все проекты в которых >5000 LOC считать достаточно сложными (я уже упоминал об этом)

Мне лично этого не достаточно, потому я нашел статью System Design and the Cost of Architectural Complexity, в которой замеряли продуктивность 178 разработчиков на протяжении 8 релизов в проекте размером в 5.5M LOC (почти ядро Linux).) 😱

10x разработчики вообще реальны? (нет) 🤣 Мем из статьи


Из графика на странице 128 (см. картинку к посту) мы можем увидеть, как продуктивность разработчика, на 100% занятого разработкой нового функционала (синяя линия), падает в зависимости от сложности* почти в 2 раза:
6k LOC при 100% сложности и ~11k LOC при 0% сложности**.
* в статье используется Architectural Complexity посчитанная через Design Structure Matrix
**но это только симуляция из регрессионной модели составленной на основе исследования

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

Из чего выводы:
🔹 Если программа планируется размером >11к LOC, вам 100% нужно думать насчет архитектуры
🔹 Если программа планируется размером <6k LOC, можно не запариваться
❗️Но помните, вы можете потерять в продуктивности на создании новых фичей до 2 раз, если вовремя не заложите эффективные дизайн и архитектурные решения.

TL;DR цифры разнятся, но значение в 5k LOC предложенное Wang можно считать нижним порогом.

2️⃣ Как долго проект находится в разработке?
Чтобы ответить на второй вопрос просто обратимся к Rational unified process framework'у.
Он предлагает рассматривать разработку любого ПО как итеративный процесс, где каждая итерация идет от 2 до 6 недель.

❗️Дальше не реально будет понять смысл, если не открыть картинку.

Архитектурные и дизайн-решения, исходя из этого framework'а, нужно закладывать на стадии Inception и Elaboration, т.е. в первые 1-3 месяца от старта проекта.
Дальше, уже во время фазы Construction, количество новых решений будет постепенно снижаться.

В целом это очень хорошо согласуется с моим опытом:
На проекте Combat Quest я первые 3 месяца закладывал основу на которой потом 90% времени разрабатывался проект.

Вывод:
🔸 Если проект планируется размером >5k LOC, продумывайте дизайн и архитектуру сразу. Иначе рискуете потерять в продуктивности до 2 раз.
🔸 Если проект стартовал больше полугода назад, нет смысла предлагать новые архитектурные решения. Все решения уже приняты.
Тут сделаю оговорку: амбициозные архитектурные решения. Мелкие улучшения всегда приветствуются.
🔸 Самое лучшее время для продумывания архитектуры — первые 3 месяца от старта проекта.

Фух, это было круто! Я получил дикое удовольствие пока готовил материал и писал эту статью 😊
Весь этот контент в развернутой форме обязательно будет в моем курсе.
В это Воскресенье поделюсь прогрессом и программой!
Включай уведомления чтобы не пропустить 🫡

Сохраняй себе, чтобы не потерять и делись с коллегами 📞
Ставь 👍 если тебе заходит такого рода контент!

#software_engineering@UniArchitect
  • 👍 54
  • 🔥 8
More from @uniarchitect
  1. Jul 24, 2026Post #199
  2. Jul 12, 2026AI НЕ ДЕЛАЕТ ВАС ПРОДУКТИВНЕЕ Незыблемый факт: AI уже очень хорош в маленьких задачах. Нап…
  3. Jul 9, 2026Post #196
  4. Jul 7, 2026UNITY BUILD PIPELINE ПО КИРПИЧИКАМ Полгода назад я решил попробовать активность в блоге, г…
  5. Jul 4, 2026ПРОКЛЯТИЕ ПЕРЕИСПОЛЬЗУЕМОСТИ Делюсь болью. Я последние 5 лет на разных уровнях у разработч…
  6. Jun 29, 2026AI КАК РЕДАКТОР, А НЕ АВТОР Это вторая статья из серии про AI. Первая тут. Когда я запуска…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →