2011-01-03 21 views
8

¿Qué plantillas utiliza para documentar clases, métodos, etc. en C++?Plantillas de documentación C++

En java eclipse lo hace todo automáticamente con javadoc, pero ¿existe un estándar para C++?

por ejemplo

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

Respuesta

7

Doxygen (una herramienta popular para la generación de documentos desde C++ código) soporta a whole bunch of different formats. Realmente no hay una herramienta estándar de documentación de C++, pero esta termina usándose mucho.

0

No hay un estándar para documentar el código (Java, C o C++). Hay herramientas que hacen documentación del código fuente y pueden tener un estándar en progreso.

Aquí es un estilo que me he adaptado a través de las edades:

//! 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 
//------------------------------------------------------------------------- 

En un momento, tuve Eclipse poner esto en nuevos archivos que he creado.
Lo guardo en un archivo de plantilla, y copio el archivo antes de escribir un nuevo código. La galería de símbolos no tendría las declaraciones de métodos o las líneas de herencia.

1

En Eclipse CDT puede configuración para generar comentarios doxygen en estructuras de código utilizando plantillas de su elección para los nuevos archivos, clases, etc.

Esto es lo que yo uso con etiquetas personalizadas adaptadas para mis proyectos

+0

Este ¡suena genial! ¿Hay algún archivo de configuración que pueda compartir, o puede publicar sus plantillas aquí? –

+0

Hay plantillas predeterminadas ya programadas en CDT para estas que puede modificar. Sin embargo, deberá activar el estilo de documentación en doxygen. Está en las opciones de CDT. – David