Coding-style doc updated
This commit is contained in:
112
coding-style.md
112
coding-style.md
@@ -32,46 +32,120 @@ password if required.
|
||||
|
||||
## DRAMSys Coding Style for C++ Code
|
||||
|
||||
+ Indentation
|
||||
|
||||
+ Breaking long lines and strings
|
||||
#### Indentation
|
||||
4 spaces are used for indentation.
|
||||
|
||||
#### Breaking long lines and strings
|
||||
Coding style is all about readability and maintainability using commonly
|
||||
available tools.
|
||||
|
||||
The limit on the length of lines is 80 columns and this is a strongly
|
||||
preferred limit.
|
||||
|
||||
Statements longer than 80 columns will be broken into sensible chunks,
|
||||
unless exceeding 80 columns significantly increases readability and does not
|
||||
hide information. Descendants are always substantially shorter than the
|
||||
parent and are placed substantially to the right. The same applies to
|
||||
function headers with a long argument list. However, never break
|
||||
user-visible strings such as printed messages, because that breaks the
|
||||
ability to grep for them.
|
||||
Statements longer than 80 columns will be broken into sensible chunks, unless
|
||||
exceeding 80 columns significantly increases readability and does not hide
|
||||
information. Descendants are always substantially shorter than the parent and
|
||||
are placed substantially to the right. The same applies to function headers
|
||||
with a long argument list. However, never break user-visible strings such as
|
||||
printed messages, because that breaks the ability to grep for them.
|
||||
|
||||
+ Placing Braces and Spaces
|
||||
#### Declaring variables
|
||||
Declare each variable on a separate line.
|
||||
|
||||
+ Naming
|
||||
Avoid short or meaningless names (e.g., "a", "b", "aux").
|
||||
|
||||
+ Functions
|
||||
Wait when declaring a variable until it is needed.
|
||||
|
||||
```c++
|
||||
// Wrong
|
||||
int a, b;
|
||||
char *c, *d;
|
||||
|
||||
// Correct
|
||||
int height;
|
||||
int width;
|
||||
char *nameOfThis;
|
||||
short counter;
|
||||
char itemDelimiter = ' ';
|
||||
```
|
||||
|
||||
Classes always start with an upper-case letter (e.g, MemoryManager,
|
||||
TracePlayer, PythonCaller, etc.), being **DRAMSys** a notable exception to the
|
||||
rule.
|
||||
|
||||
Acronyms are camel-cased (e.g., TlmRecorder, not TLMRecorder, Dram, not DRAM).
|
||||
|
||||
#### Whitespace
|
||||
Always use a single space after a keyword and before a curly brace:
|
||||
|
||||
```c++
|
||||
// Wrong
|
||||
if(foo){
|
||||
}
|
||||
|
||||
// Correct
|
||||
if (foo) {
|
||||
}
|
||||
```
|
||||
|
||||
For pointers or references, always use a single space between the type and
|
||||
'\*' or '&', but no space between the '\*' or '&' and the variable name:
|
||||
|
||||
```c++
|
||||
char *x;
|
||||
const QString &myString;
|
||||
const char * const y = "hello";
|
||||
```
|
||||
|
||||
Surround binary operators with spaces.
|
||||
|
||||
No space after a cast.
|
||||
|
||||
Avoid C-style casts when possible.
|
||||
|
||||
```c++
|
||||
// Wrong
|
||||
char* blockOfMemory = (char* ) malloc(data.size());
|
||||
|
||||
// Correct
|
||||
char *blockOfMemory = reinterpret_cast<char *>(malloc(data.size()));
|
||||
```
|
||||
|
||||
Do not put multiple statements on one line.
|
||||
|
||||
Use a new line for the body of a control flow statement:
|
||||
|
||||
```
|
||||
// Wrong
|
||||
if (foo) bar();
|
||||
|
||||
// Correct
|
||||
if (foo)
|
||||
bar();
|
||||
```
|
||||
|
||||
|
||||
## DRAMSys Coding Style for Python Code
|
||||
|
||||
+ We follow the PEP8 style guide.
|
||||
We follow the PEP8 style guide.
|
||||
|
||||
+ How to use vim plugins
|
||||
**Hint:**
|
||||
There is a plugin for VIM. More information can be found in
|
||||
[vim.org](https://www.vim.org/scripts/script.php?script_id=2914).
|
||||
|
||||
## Using Astyle in Qt Creator
|
||||
|
||||
+ Select **Help** > **About Plugins** > **C++** > **Beautifier** to enable the plugin.
|
||||
+ Select **Help** > **About Plugins** > **C++** > **Beautifier** to enable the
|
||||
plugin.
|
||||
|
||||
+ Restart Qt Creator to be able to use the plugin (close Qt Creator and open it again).
|
||||
+ Restart Qt Creator to be able to use the plugin (close Qt Creator and open
|
||||
it again).
|
||||
|
||||
+ Select **Tools** > **Options** > **Beautifier** to specify settings for beautifying files.
|
||||
+ Select **Tools** > **Options** > **Beautifier** to specify settings for
|
||||
beautifying files.
|
||||
|
||||
+ Select the **Enable auto format on file save** check box to automatically beautify files when you save them.
|
||||
+ Select the **Enable auto format on file save** check box to automatically
|
||||
beautify files when you save them.
|
||||
|
||||
|
||||
## References
|
||||
|
||||
Reference in New Issue
Block a user