2011-01-03 4 views
8

Какие шаблоны вы используете для документирования классов, методов и т. Д. На C++?C++ документации шаблоны

В java eclipse все это делается автоматически с помощью javadoc, но есть ли стандарт для C++?

, например

//================================== 
// returns half of the given num 
//================================== 
foo(int num) { 
    return num/2; 
} 

ответ

7

Doxygen (популярный инструмент для создания документации из кода C++) поддерживает a whole bunch of different formats. На самом деле не существует стандартного инструментария документации на C++, но это становится все более полезным.

0

Нет стандарта для документирования кода (Java, C или C++). Существуют инструменты, которые делают документацию из исходного кода , и у них может быть действующий стандарт.

Вот стиль, который я адаптированный на протяжении веков:

//! This class represents a fraction: xx nn/dd. 
/*! Where xx is the whole number, nn is the numerator, dd is the denominator. 
* \author Thomas Matthews 
*/ 
class Fraction 
    : public boost::equality_comparable<Fraction>, 
     public boost::less_than_comparable<Fraction>, 
     public boost::addable<Fraction>, 
     public boost::subtractable<Fraction>, 
     public boost::multipliable<Fraction>, 
     public boost::dividable<Fraction> 
{ 
    //--------------------------------------------------------------------- 
    // Friends 
    //--------------------------------------------------------------------- 

    //--------------------------------------------------------------------- 
    // Public fraction 
    //--------------------------------------------------------------------- 
    public: 

    //--------------------------------------------------------------------- 
    // Public Constructors and Destructors 
    //--------------------------------------------------------------------- 
    public: 
    //! Constructor -- string 
           Fraction(const std::string& fraction_text); 

    //! Constructor -- whole, numerator, denominator as integers 
           Fraction(const int& denomenator = 1, 
             const int& numerator = 0, 
             const int& whole = 0); 

    //! Constructor -- floating point 
           Fraction(const double& floating_point); 

    //! Copy constructor 
           Fraction(const Fraction& rc); 

    //! Destructor 
    virtual      ~Fraction(); 

    //--------------------------------------------------------------------- 
    // Public Overloaded Operators 
    //--------------------------------------------------------------------- 
    public: 
    Fraction&     operator= (const Fraction& f); 
    bool      operator==(const Fraction& f) const; 
    bool      operator==(const double& d) const; 
    bool      operator< (const double& d) const; 
    bool      operator< (const Fraction& f) const; 
    Fraction&     operator+=(const Fraction& f); 
    Fraction&     operator-=(const Fraction& f); 
    Fraction&     operator*=(const Fraction& f); 
    Fraction&     operator/=(const Fraction& f); 
    Fraction&     operator*=(const unsigned int scalar_value); 
    Fraction&     operator/=(const unsigned int scalar_value); 
           operator double(void) const; 

    //--------------------------------------------------------------------- 
    // Public Methods 
    //--------------------------------------------------------------------- 
    public: 
    //! Returns the fraction as a string. 
    std::string     get_value_as_string(void) const; 

    //! Sets the value from a string. 
    void      set_value(const std::string& fraction_string); 

    //! Sets the value from a floating point value. 
    void      set_value(const double& value); 

    //! Simplifies the fraction by reducing the denominator & numerator. 
    void      simplify(void); 

    //--------------------------------------------------------------------- 
    // Public Members 
    //--------------------------------------------------------------------- 
    public: 


    //--------------------------------------------------------------------- 
    // Protected Methods 
    //--------------------------------------------------------------------- 
    protected: 

    //--------------------------------------------------------------------- 
    // Protected Members 
    //--------------------------------------------------------------------- 
    protected: 

    //--------------------------------------------------------------------- 
    // Private Methods 
    //--------------------------------------------------------------------- 
    private: 

    //--------------------------------------------------------------------- 
    // Private Members 
    //--------------------------------------------------------------------- 
    private: 
    unsigned int    m_whole; 
    int       m_numerator; 
    unsigned int    m_denomenator; 
}; 



//------------------------------------------------------------------------- 
// Fraction Exceptions 
//------------------------------------------------------------------------- 


//------------------------------------------------------------------------- 
// Fraction Fraction 
//------------------------------------------------------------------------- 
//typedef boost::shared_ptr<Fraction>   Ptr_Fraction; 
//typedef boost::shared_ptr<const Fraction> Ptr_Const_Fraction; 


//------------------------------------------------------------------------- 
// Inlined Fraction Constructors and Destructors 
//------------------------------------------------------------------------- 


//------------------------------------------------------------------------- 
// Inlined Fraction Overloaded Operators 
//------------------------------------------------------------------------- 


//------------------------------------------------------------------------- 
// Inlined Fraction Methods in alphabetical order 
//------------------------------------------------------------------------- 

В свое время я имел Eclipse, поставив это в новые файлы, которые я создал.
Я храню это в файле трафарета и копирую файл перед написанием нового кода. Трафарет не будет иметь декларации метода или строки наследования.

1

В Eclipse вы можете настроить CDT для создания комментариев Doxygen на структуры кода с использованием шаблонов вашего выбора для новых файлов, классов и т.д.

Это то, что я использую с помощью пользовательских тегов подходит для моих проектов

+0

Это звучит здорово! Есть ли файл конфигурации, который вы можете предоставить, или можете ли вы разместить свои шаблоны здесь? –

+0

В CDT уже запрограммированы шаблоны по умолчанию, которые вы можете изменить. Однако вам нужно активировать стиль документации для doxygen. Это в вариантах CDT. – David

Смежные вопросы