CONTRIBUTING.md: Summarise coding style guide
Hopefully, this should make it easier for people to understand the style guide.coding-style-guide
parent
ab1fbdf98a
commit
a8984f40a6
|
@ -42,7 +42,7 @@ newline delimits the end of the event.
|
||||||
|
|
||||||
This project follows the the
|
This project follows the the
|
||||||
[Linux kernel's style guide](https://www.kernel.org/doc/html/latest/process/coding-style.html#codingstyle)
|
[Linux kernel's style guide](https://www.kernel.org/doc/html/latest/process/coding-style.html#codingstyle)
|
||||||
as far as coding style is concererned, with the following exceptions:
|
as far as coding style is concerned, with the following exceptions:
|
||||||
|
|
||||||
* When declaring pointer variables, the asterisk (`*`) is placed on the left
|
* When declaring pointer variables, the asterisk (`*`) is placed on the left
|
||||||
with the type rather than the variable name. Declaring multiple variables in
|
with the type rather than the variable name. Declaring multiple variables in
|
||||||
|
@ -51,9 +51,99 @@ as far as coding style is concererned, with the following exceptions:
|
||||||
a lot of code that uses aligned argument lists in the project, but I have
|
a lot of code that uses aligned argument lists in the project, but I have
|
||||||
come to the conclusion that these alignments are not very nice to maintain.
|
come to the conclusion that these alignments are not very nice to maintain.
|
||||||
|
|
||||||
|
### Summary & Examples:
|
||||||
|
|
||||||
|
In case you aren't familiar with Linux's coding style, here is a short summary
|
||||||
|
and some examples of acceptable formatting:
|
||||||
|
|
||||||
|
* Use tabs for indenting.
|
||||||
|
* We do not align code (mostly), but when we do, we use spaces rather than
|
||||||
|
tabs. This rule is not according to the Linux style guide.
|
||||||
|
* The preferred limit on the length of a single line is 80 columns.
|
||||||
|
* User-visible string such as log messages must not be split up.
|
||||||
|
* Use space after the following keywords: `if`, `switch`, `case`, `for`, `do`,
|
||||||
|
`while`.
|
||||||
|
* Do **not** use space after others such as: `sizeof`, `typeof`, `alignof`
|
||||||
|
or `__attribute__`.
|
||||||
|
* Do **not** use typedefs.
|
||||||
|
* It is allowed to use typedefs for function pointers. This rule is not
|
||||||
|
according to the Linux style guide.
|
||||||
|
|
||||||
|
#### Functions
|
||||||
|
|
||||||
|
```
|
||||||
|
static int do_something(int number, const char* text)
|
||||||
|
{
|
||||||
|
body of function
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
#### `if`
|
||||||
|
|
||||||
|
```
|
||||||
|
// Single statement
|
||||||
|
if (condition)
|
||||||
|
do_this();
|
||||||
|
|
||||||
|
// Multiple statements
|
||||||
|
if (condition) {
|
||||||
|
do_this(2, "41");
|
||||||
|
do_that();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Single statement if/else
|
||||||
|
if (condition)
|
||||||
|
do_this();
|
||||||
|
else
|
||||||
|
do_that();
|
||||||
|
|
||||||
|
// Multi-statement if/else
|
||||||
|
if (condition) {
|
||||||
|
do_this();
|
||||||
|
do_that();
|
||||||
|
} else {
|
||||||
|
otherwise();
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
#### `switch`
|
||||||
|
|
||||||
|
```
|
||||||
|
switch (value) {
|
||||||
|
case 3:
|
||||||
|
printf("three!\n");
|
||||||
|
break;
|
||||||
|
case 5:
|
||||||
|
printf("five!\n");
|
||||||
|
break;
|
||||||
|
case 42:
|
||||||
|
printf("the answer to life, the universe and everything: ");
|
||||||
|
// fallthrough
|
||||||
|
default:
|
||||||
|
printf("%d\n", value);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Arithmetic
|
||||||
|
|
||||||
|
```
|
||||||
|
int a = b * c + 5;
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Pointers
|
||||||
|
|
||||||
|
```
|
||||||
|
char* some_text = "some text";
|
||||||
|
char* just_text = text + 5;
|
||||||
|
char t = *just_text;
|
||||||
|
char e = just_text[1];
|
||||||
|
```
|
||||||
|
|
||||||
## Unit Tests
|
## Unit Tests
|
||||||
|
|
||||||
wayvnc has a small but growing set of unit tests, which are run on every GitHub PR. To run them locally, do the following:
|
wayvnc has a small but growing set of unit tests, which are run on every GitHub
|
||||||
|
PR. To run them locally, do the following:
|
||||||
```bash
|
```bash
|
||||||
meson test -C build
|
meson test -C build
|
||||||
```
|
```
|
||||||
|
@ -61,4 +151,4 @@ meson test -C build
|
||||||
## No Brown M&Ms
|
## No Brown M&Ms
|
||||||
|
|
||||||
All pull requests must contain the following sentence in the description:
|
All pull requests must contain the following sentence in the description:
|
||||||
I have read and understood CONTRIBUTING.md and its associated documents.
|
I have read and understood CONTRIBUTING.md.
|
||||||
|
|
Loading…
Reference in New Issue