Code Style Guide¶
Basic Code Style Rules¶
In DI-engine, we follow the following basic code specifications:
The file name is always named with lowercase letters, numbers and underscores, such as
my_policy.py
.For class, the Camelcase Naming Convention which is started with capital letters shall be adopted, such as
MyClass
. In addition, for internal classes, you can use additional underscores at the beginning, for example_InnerClass
.All functions and methods are named with lowercase letters, numbers and underscores, such as
my_function
andmy_method
.For variables, they are all named with lowercase letters, numbers and underscores, such as
my_var
.For methods and variables belonging to a class, use a single underscore to express the protected inheritance relationship, such as
_protected_val
. Use two underscores to express a private inheritance relationship, for example__private_val
.For the naming of method parameters, if it is an instance method, the first parameter should be named
self
. If it is a class rule, the first parameter should be namedcls
. Please use*args
for the variable length parameter of the list, and**kwargs
for the key value parameter.When naming variables, if the name conflicts with reserved keywords, native classes, etc., please underline at the end to avoid unexpected effects, such as
type_
.
yapf¶
For yapf, we can use existing Makefile for one-click fix
make format
Considering the large scale of the whole project and the large number of files, you can use the following commands to check the code design of the source code files in a specific path
make format RANGE_DIR=./ding/xxx
In this project, we use the yapf config code specification configuration based on PEP8. For details about the configuration, you can refer to the description on the Github homepage. PEP8 is the code style configuration officially recommended by Python. Paying attention to code style can improve the readability of the code and minimize unintended behavior.
In addition, yapf can also integrate with pycharm through the plug-in yapf pycharm:
flake8¶
For flake8, we can use the existing Makefile to check the code design
make flake_check
Considering the large scale of the whole project and the large number of files, you can use the following commands to check the code design of the source code files in a specific path
make flake_check RANGE_DIR=./ding/xxx
In this project, we use flake8 code design specification configuration based on pep8. For details of configuration, please refer to the description of flake8 official documents. PEP8 is the code style configuration officially recommended by python. Paying attention to the code style can improve the readability of the code and minimize the behavior that does not meet the expectations.
Reasonable Import Order¶
Considering the PEP8 standard and usage habits, we recommend that users use the following import order:
Standard library imports
Related third party imports
Local application/library specific imports
Relative imports
e.g.
from xx import xx
import xx
import ding.xx
from .xx