Великий проект, над яким я працюю вже пару років, - це управління (і все) застосуванням вдосконаленого пристрою, серцем його прошивки.
Пристрій досить просунутий, має більше різних функціональних можливостей, ніж я міг би сказати з пам'яті, і 98% з них обробляється цим величезним виконуваним файлом. З одного боку, програма є досить рентабельною, добре модулюється всередині, документально оформлена належним чином, є розумне розділення функціональних можливостей за каталогами та файлами тощо.
Зрештою, все це згруповано в одній програмі, яка робить все, починаючи від віддаленої комунікації баз даних, керування сенсорним екраном, обробки десятка різних протоколів зв'язку, вимірювань, декількох алгоритмів управління, захоплення відео, часу сходу сонця та дати Великодня (серйозно, і вони потрібні для дуже серйозних цілей!) ... Загалом, речі, які дуже тонко пов'язані між собою, часто пов'язані лише через деякі дані, які проникають між деякими далекими модулями.
Це може бути зроблено у вигляді декількох окремих виконуваних файлів, які спілкуються між собою, скажімо, через сокети, з більш конкретною метою, можливо завантажуються / вивантажуються за потребою тощо. Немає конкретних причин, чому це зроблено таким чином.
З одного боку, це працює, і це добре працює. Проект є більш простим, без підтримки збірки декількох двійкових файлів. Внутрішня структура також простіша, коли ви можете просто викликати метод або читати змінну, а не говорити через сокети або спільну пам'ять.
Але з іншого боку, розмір, масштаб цієї речі просто відвертає мене, це відчувається як пілотування Титаніка. Мене завжди вчили модулювати, і з’єднуючи все в одному файловому файлі, я почуваюся неправильно. Я знаю, що одна проблема - це сильний збій одного (навіть незначного) модуля, який виходить з ладу, - але якість коду гарантує, що це насправді не відбувається у версіях релізів. В іншому випадку внутрішнє розділення та захисне програмування запевняє, що це все ще працюватиме правильно, навіть якщо половина внутрішніх модулів з певних причин виходить з ладу.
Які ще небезпеки я не помічав? Чому це мене повзе? Це просто ірраціональний страх перед невідомим? Чи робить таким чином серйозні великі проекти загальноприйнятою практикою? Або заспокойте мої страхи, або дайте мені вагомий привід переробляти версію 2.0 на кілька менших двійкових файлів.