Как консолидировать документацию на разных языках/средах?

Я разрабатываю библиотеку классов, предназначенную для решения широкого круга задач. Одна вещь об этой библиотеке заключается в том, что она будет изначально использоваться несколькими различными языками и средами. Например, будет версия C++, полностью написанная на C++, версия .NET, написанная на C#, и версия Java, написанная на Java, без каких-либо зависимостей друг от друга... в отличие от написания основной библиотеки на C++ и простого предоставления .NET и привязки к нему Java.

Библиотека в каждой из своих различных форм предназначена для решения различных, но иногда очень похожих задач. Например, может быть много классов, члены которых будут функционально идентичны в каждом языке, а также может быть много классов, которые будут присутствовать только в одной или двух языковых версиях библиотеки, но не в других. Возьмите класс или структуру, представляющую номер версии программы. В .NET уже есть такой класс (System.Version), поэтому я бы не стал включать его в свою версию .NET, но библиотеки C++ и Java предоставят его.

Проблема, с которой я столкнулся, заключается в том, что для классов, которые будут существовать в большинстве или во всех версиях библиотеки, документация останется относительно неизменной (очевидно). Краткий текст для версии C++ и Java для структуры Version будет выглядеть примерно так: "Представляет номер версии программного обеспечения в форме major.minor.build.revision"... как и подробное описание класса, и все члены документация и т. д. Как вы знаете, .NET, Java и C++ имеют собственный синтаксис документации. Есть ли способ, которым я могу попытаться объединить документацию нейтральным к языку способом (БЕЗ написания документации отдельно от исходного кода - например, ручная документация, а не создание ее с использованием doxygen/sandcastle/javadoc), или я застрял, копируя и вставляя один и тот же текст в исходные файлы каждой версии?


person Jake Petroules    schedule 19.06.2010    source источник
comment
+1, но я бы не сказал, что С++ имеет свой собственный синтаксис документации, если только вы не имеете в виду doxygen, но обширные параметры конфигурации синтаксиса doxygen вряд ли делают его стандартом.   -  person soulmerge    schedule 19.06.2010


Ответы (1)


У меня были те же проблемы, и я решил, что у меня есть только два варианта:

  1. Использование одного и того же генератора документации на всех языках. Если вы используете doxygen (или ROBODoc, или что-то еще) для всех из них, у вас будет только один синтаксис документа для всех языков. Это означает, что вы должны порвать с соглашениями, специфичными для языка.
  2. Напишите свой собственный парсер документов. Это тяжелая работа, особенно для языка с довольно сложными синтаксическими правилами (например, C++).

В настоящее время мы используем doxygen для таких проектов.

person soulmerge    schedule 19.06.2010
comment
Думаю, у меня нет выбора, кроме как дублировать. Сам код будет продублирован на разных языках, поэтому я думаю, что сделать это и для документации будет не так уж плохо. - person Jake Petroules; 20.06.2010