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