IAP GITLAB

Update Coding Conventions and Guidelines authored by Ralf Ulrich's avatar Ralf Ulrich
...@@ -310,7 +310,7 @@ warning using the flag ```"FIXME"``` as keyword. ...@@ -310,7 +310,7 @@ warning using the flag ```"FIXME"``` as keyword.
and not and not
``` ```
/** /**
* Here we have a length comment on the purpose of this function TimeOfIntersection to explain that * Here we have a long comment on the purpose of this function TimeOfIntersection to explain that
* it calculated the "time of intersection" and all the strange symbols and conventions used here. * it calculated the "time of intersection" and all the strange symbols and conventions used here.
* Such a comment only bloats the code, and provides no further information compared to the code above. * Such a comment only bloats the code, and provides no further information compared to the code above.
**/ **/
...@@ -332,14 +332,14 @@ warning using the flag ```"FIXME"``` as keyword. ...@@ -332,14 +332,14 @@ warning using the flag ```"FIXME"``` as keyword.
- a doxygen comment block has to be initiated by "/**", "///!", or "/*!" - a doxygen comment block has to be initiated by "/**", "///!", or "/*!"
- doxygen tags start with either "@" or "\" - doxygen tags start with either "@" or "\"
- doxygen comment blocks are automatically always for the next (directly following) symbol. This can be a class/struct/function/variable/enum/namespace/etc. - doxygen comment blocks are automatically always for the next (directly following) symbol. This can be a class/struct/function/variable/enum/namespace/etc.
- thus, never specify "\class XY" if it is anyway not needed. - thus, never specify "\class XY", "\function xxxY", etc. since it is typically not needed.
- the single separated first line of a document block is the "brief" description (thus, do not use \brief) - the single separated first line of a document block is the "brief" description (thus, also do not use "\brief blah...")
- a comment block can be as long as needed and benefit from very rich formatting, including math, verbatim, etc. - a comment block can be as long as needed and benefit from very rich formatting, including math (via "\f$ latex-here \f$"), verbatim, etc.
- the extra tags we might want to use, if applicable and useful, are "\param ...", "\return ...", - the extra tags we might want to use, if applicable and useful, are "\param ...", "\return ...",
- very useful may be: "\sa ..." (see also), "\example ...", "\todo ...", "\bug ..." - very useful may be: "\sa ..." (see also), "\ref", "\example ...", "\todo ...", "\bug ..."
``` ```
/** /**
* This enum we need. * This enum we need (brief).
* *
* Long description of enum and content. * Long description of enum and content.
*/ */
...@@ -348,7 +348,7 @@ warning using the flag ```"FIXME"``` as keyword. ...@@ -348,7 +348,7 @@ warning using the flag ```"FIXME"``` as keyword.
}; };
/** /**
* This class handles that. * This class handles that...briefly.
* *
* Long description of class and functionality. * Long description of class and functionality.
*/ */
...@@ -363,12 +363,9 @@ warning using the flag ```"FIXME"``` as keyword. ...@@ -363,12 +363,9 @@ warning using the flag ```"FIXME"``` as keyword.
}; };
``` ```
- special note: only, if you need to describe global variables/enums or free functions, you must add a block "\file ..." to describe the file, too. Never do this otherwise. - special note: only, if you need to describe global variables/enums or free functions, you must add a block "\file ..." to describe the file, too. Never add "\file .." otherwise, it is useless.
``` ```
/*! \file theFile.hpp /*! \file theFile.hpp
* A brief description here.
*
* Details follow here.
*/ */
/*! A macro that returns the maximum of \a a and \a b. /*! A macro that returns the maximum of \a a and \a b.
...@@ -383,6 +380,19 @@ warning using the flag ```"FIXME"``` as keyword. ...@@ -383,6 +380,19 @@ warning using the flag ```"FIXME"``` as keyword.
*/ */
int close(int); int close(int);
``` ```
- if you want to group class members use "\{" and "\}":
```
/**
* \name Very brief description
* Longer explanation, details.
* \{
**/
/// eventual description of member1
int member1();
/// eventual description of member2
void member2(int a, double b) const;
/** \} */
```
References: References:
- https://www.rosettacommons.org/docs/latest/development_documentation/tutorials/doxygen-tips - https://www.rosettacommons.org/docs/latest/development_documentation/tutorials/doxygen-tips
... ...
......