Я розробив нашу поточну архітектуру проектів і почав самостійно її розробляти (досягнувши чогось подібного, revision 40
) .
Ми розробляємо просту рамку маршрутизації метро, і моя конструкція, здавалося, була зроблена надзвичайно вдало - кілька основних моделей, відповідні погляди, основна логіка та структури даних були змодельовані "як належить" і повністю відокремлені від візуалізації, алгоритмічна частина також була реалізована крім основних моделей і мала незначну кількість точок перетину.
Я б назвав цей дизайн масштабованим, настроюваним, простим у здійсненні, взаємодіючи здебільшого на основі "взаємодії чорної скриньки" і, ну, дуже приємно.
Тепер, що було зроблено:
- Я запустив кілька реалізацій відповідних інтерфейсів, переніс декілька зручних бібліотек і написав заглушки реалізації для деяких частин програми.
- У мене був документ, що описує стиль кодування та приклади використання цього стилю кодування (мій власний письмовий код).
- Я змусив використовувати більш-менш сучасні
C++
методи розробки, включаючиno-delete
код (обернутий через смарт-покажчики) тощо. - Я задокументував мету конкретних реалізацій інтерфейсу та те, як їх слід використовувати.
- Одиничні тести (в основному, інтеграційні тести, оскільки не було багато "фактичного" коду) та набір макетів для всіх основних абстракцій.
Я був відсутній 12 днів .
Що ми маємо зараз (проект розробили 4 інші члени команди):
- 3 різних стилів кодування в усьому проекті (я думаю, два з них погодилися використовувати той самий стиль :) , це ж стосується іменування наших абстракцій (наприклад
CommonPathData.h
,SubwaySchemeStructures.h
) , які в основному є заголовками, декларуючи деякі структури даних. - Абсолютна відсутність документації для нещодавно реалізованих деталей.
- Те, що я нещодавно міг назвати
single-purpose-abstraction
зараз, займається принаймні двома різними типами подій, має тісну взаємодію з іншими частинами тощо. - Половина використовуваних інтерфейсів тепер містить змінні учасника
(sic!)
. - Використання сирого вказівника майже скрізь.
- Тести блоку вимкнено, оскільки "
(Rev.57) They are unnecessary for this project
". - ... (це, мабуть, не все) .
Історія прихильності показує, що мій дизайн був інтерпретований як надмір, і люди почали поєднувати його з особистими велосипедами та повторно допрацьованими колесами, а потім виникли проблеми з інтеграцією фрагментів коду.
Тепер - проект все ще робить лише невелику кількість того, що він повинен робити, у нас є серйозні проблеми інтеграції, я припускаю, що деякі витоки пам'яті.
Чи можна зробити щось у цьому випадку?
Я розумію, що всі мої зусилля не принесли користі, але термін настає досить скоро, і нам потрібно щось зробити. У когось була подібна ситуація?
В основному я думав, що хороший (ну я зробив усе, що міг) почати для проекту, ймовірно, призведе до чогось приємного, однак я розумію, що я помиляюся.