Doxygen
Doxygen is a tool that generates documentation from code comment respecting a certain format. This code documentation is used across Enfusion projects, starting with Arma Reforger.
Project Documentation
Game | File Location | Download |
---|---|---|
Arma Reforger | Arma Reforger Tools \ Workbench |
Arma Reforger Scripting Guidelines Hub |
Bohemia Interactive Guidelines
Documentation is important:
- Document what is public (protected methods go second - people should use public methods anyway)
- Document what is important (features, concepts, specifics like variables or constants, etc)
- Document what is dangerous (performance-wise, crash-wise)
Bohemia Interactive recommendations:
- use
/ /! and / /!< /*! * /, / / / and /** * / are to be avoided (inline comment is preferred in order to remain able to comment big chunks of code with /* * / without conflict)
- do not go too much into details (e.g
/ /! This method does xxx if provided Y but will not do it if Z is set to true at line 246 and ...) - do not over-document code (e.g
/ /! Get the name on string GetName() is of absolutely no value); again, code should be self-explanatory and a comment should explain a design decision (if needed)
See Examples below.
Class
A class documentation explains what the class does. It can add said class to groups (see Doxygen's grouping documentation). Grouping is usually done in a different comment block than class comment.
Method
A method documentation goes below the
Various parameter formats:
Only one return format:
To be used when a void signature is not used.
Variable
Examples
Do
This example is taken from SCR_ObstacleDetector:
This comment is fine for multiple reasons:
- the main description states the method's goal and usage condition
- parameters are documented and specifics (when present) are explained
- the return value is described accurately
- error cases are covered
Don't
Example | Explanation |
---|---|
| |
//------------------------------------------------------------------------------------------------
//! Returns true if has obstacle
//! \param[in] worldPos the world position
//! \param[in] exclusionList the exclusion list
//! \return true or false
bool HasObstacle(vector worldPos, array<IEntity> exclusionList = null) |
|
This one is one of the worst possible cases: no comment is better than a wrong comment. |
See Also
- https://www.doxygen.nl/ - the official Doxygen website
- https://www.doxygen.nl/manual/ - the official documentation
- https://www.doxygen.nl/manual/commands.html - \commands list