Как документировать C++ проект?

Есть рабочий проект на C++, примерно 20к строк. Есть ощущение, что документирование только с помощью Doxygen это недостаточно - структура классов это конечно здорово, но для новичков имхо разбираться в коде будет сложно. Может имеет смысл посмотреть куда-нибудь в сторону UML?
Хочется описать не только отдельную функцию и/или класс, но и какой-то модуль.
  • Вопрос задан
  • 174 просмотра
Пригласить эксперта
Ответы на вопрос 3
vabka
@vabka
Токсичный шарпист
Может имеет смысл посмотреть куда-нибудь в сторону UML?

UML на практике мёртв. Лучше посмотри в сторону C4 model.
И то максимум до третьего уровня (component diagram). Часто хватает даже второго уровня (container diagram).
Четвёртый уровень (code diagram) слишком сильно детализирован и его слишком тяжело поддерживать в актуальном состоянии.

А лучше ещё сделать пару страничек на внутренней вики с объяснением, что это вообще за проект и что он делает.
Ответ написан
Комментировать
@Kaban_Kanban
Мой ответ содержит лишь умозаключение Боба Мартина и мое отношение к документированию. Я не говорю, что так должно быть.

Если вспомнить умозаключение Боба Мартина из книги "Чистый код". Чистый код не требует документирования или требует, но не значительного. Чистый код — это код, который легко читать, понимать и изменять другими разработчиками. Он является выразительным, кратким и организованным.

В своей практике я встречал 3 подхода к документированию:
- Нет документирования (лишь комментарии к отдельным блокам кода)
- Документируют, но только то что захотели
- Документируют все

Когда я документирую что-либо я стараюсь показать 2 вещи:
- структуру без реализации (реализацию можно посмотреть в коде)
- бизнес задачу/ бизнес подход (для чего это нужно?)

Читал статью (оч. давно) про чрезмерное документирование... Но ни разу не встречал.

Чаще всего я видел документирование через MarkDown, UML, OpenAPI, Swagger, просто использование интерфейсов.

По поводу UML это действительно удобно, но не все хорошо читают его. Если речь о новичках как о людях которые недавно в разработке, то UML только усложнит процесс изучения продукта. Если речь о новичках как о людях с опытом которые недавно подключились к вашему проекту, то возможно это упростит процесс изучения продукта.

UML отлично подойдет для описания отношения (классов/объектов) или для взаимодействия модулей. Ни разу не использовал UML для описания (функций/методов), но почему бы и нет? Были случаи когда я использовал просто блок схему для описания поведения (функции/метода)...

Создавая любой вариант документации нужно продумать процесс поддерживания ее актуальности.
Ответ написан
maaGames
@maaGames
Погроммирую программы
Но ведь в доксигене есть поддержка автогенерации некоторых из UML диаграм. Остальные можно нарисовать в любом ПО и в виде картинок подключить в тексте программы, чтобы доксиген их в документацию добавил. Там же не только комментарии к фукнциям можно делать, но и любой текст форматированный создать, просто это менее удобно делается, по сравнению с описаниями функций.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы