Skip to content

Style¤

Python Code¤

Use the compas style guide from the offcial documentation documentation.

C++ Code¤

  • Functions: snake_case
  • Variables (local and public): snake_case
  • Private members: _snake_case (prefix with _)
  • Static members: s_snake_case (prefix with s and _)
  • Constants: SNAKE_UPPER_CASE
  • Class/Struct names: UpperCamelCase

Namespaces¤

// Do not use "using namespace std", specify namespace explicitly
std::vector<double> points;

Functions¤

// Next line bracket style
void compute_boolean_union()
{
    /* content */
}

Structures¤

// Structure name uses UpperCamelCase
struct MeshData
{
    // Structure attribute uses snake_case
    const char* file_name;
};

Classes¤

// Class name uses UpperCamelCase
class BooleanSolver
{
public:
    BooleanSolver(const double& tolerance);
    virtual ~BooleanSolver();

    // Member functions use snake_case
    void compute_intersection()
    {
        // Local variable uses snake_case
        double tolerance = 0.001;
    }

// Field indicator to separate functions and attributes
public:
    int result_count;      // Public member uses snake_case

private:
    void validate_mesh();  // Private function uses snake_case
    double _tolerance;     // Private member uses _snake_case
    static int s_meshes;   // Static member uses s_snake_case
    const int MAX_COUNT = 100;  // Constant uses SNAKE_UPPER_CASE
};

Docstrings¤

Use Doxygen-style comments with the following format:

Functions and Methods¤

/**
 * @brief Short description of function
 * @param[in] param1 Description of input parameter
 * @param[out] param2 Description of output parameter
 * @return Description of return value
 * @throws Description of potential exceptions
 */
double compute_intersection(const Mesh& mesh1, Mesh& result);

Classes¤

/**
 * @brief Short description of class
 * @details Longer description if needed
 */
class BooleanSolver {
public:
    /**
     * @brief Constructor description
     * @param tolerance Mesh tolerance value
     */
    BooleanSolver(double tolerance);
};

Member Variables¤

class BooleanSolver {
private:
    double _tolerance;  //!< Brief description of member variable
    int s_meshes;      //!< Use //!< for single-line member documentation
};