Code style¶
All code in fresnel must follow a consistent style to ensure readability. We provide configuration files for linters (specified below) so that developers can automatically validate and format files.
Python¶
Python code in GSD should follow PEP8 with the formatting performed by
yapf (configuration in setup.cfg
).
Code should pass all flake8 tests and formatted by yapf.
Tools¶
Documentation¶
Python code should be documented with docstrings and added to the Sphinx
documentation index in doc/
. Docstrings should follow Google style
formatting for use in Napoleon.
C++/CUDA¶
Style is set by clang-format >= 10
Whitesmith’s indentation style.
100 character line width.
Indent only with spaces.
4 spaces per indent level.
See
.clang-format
for the full clang-format configuration.
Naming conventions:
Namespaces: All lowercase
somenamespace
Class names:
UpperCamelCase
Methods:
lowerCamelCase
Member variables:
m_
prefix followed by lowercase with words separated by underscoresm_member_variable
Constants: all upper-case with words separated by underscores
SOME_CONSTANT
Functions:
lowerCamelCase
Tools¶
Autoformatter: clang-format.
Run:
./run-clang-format.py -r .
to see needed changes.Run:
clang-format -i file.c
to apply the changes.
Documentation¶
Documentation comments should be in Javadoc format and precede the item they
document for compatibility with Doxygen and most source code editors. Multi-line
documentation comment blocks start with /**
and single line ones start with
///
.
Other file types¶
Use your best judgment and follow existing patterns when styling CMake and other files types. The following general guidelines apply:
100 character line width.
4 spaces per indent level.
4 space indent.
Editor configuration¶
Visual Studio Code users: Open the provided
workspace file (fresnel.code-workspace
) which provides configuration
settings for these style guidelines.