Mercurial > irccd
annotate STYLE.md @ 448:9be4f8a5cf1a
Irccdctl: implement rule-list
author | David Demelier <markand@malikania.fr> |
---|---|
date | Wed, 05 Jul 2017 18:20:26 +0200 |
parents | c363c09e1f44 |
children | d5b6dd7c2311 |
rev | line source |
---|---|
409
c363c09e1f44
Misc: add CONTRIBUTE.md and STYLE.md
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
1 IRC Client Daemon CODING STYLE |
c363c09e1f44
Misc: add CONTRIBUTE.md and STYLE.md
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
2 ============================== |
c363c09e1f44
Misc: add CONTRIBUTE.md and STYLE.md
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
3 |
c363c09e1f44
Misc: add CONTRIBUTE.md and STYLE.md
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
4 General rules |
c363c09e1f44
Misc: add CONTRIBUTE.md and STYLE.md
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
5 ------------- |
c363c09e1f44
Misc: add CONTRIBUTE.md and STYLE.md
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
6 |
c363c09e1f44
Misc: add CONTRIBUTE.md and STYLE.md
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
7 - Never write two blank consecutives blank lines, |
c363c09e1f44
Misc: add CONTRIBUTE.md and STYLE.md
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
8 - No jokes, |
c363c09e1f44
Misc: add CONTRIBUTE.md and STYLE.md
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
9 - No easter eggs. |
c363c09e1f44
Misc: add CONTRIBUTE.md and STYLE.md
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
10 |
c363c09e1f44
Misc: add CONTRIBUTE.md and STYLE.md
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
11 Style |
c363c09e1f44
Misc: add CONTRIBUTE.md and STYLE.md
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
12 ----- |
c363c09e1f44
Misc: add CONTRIBUTE.md and STYLE.md
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
13 |
c363c09e1f44
Misc: add CONTRIBUTE.md and STYLE.md
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
14 - Always use 4 spaces as indentation, |
c363c09e1f44
Misc: add CONTRIBUTE.md and STYLE.md
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
15 - Do not exceed 120 characters for lines of code, |
c363c09e1f44
Misc: add CONTRIBUTE.md and STYLE.md
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
16 - Do not exceed 80 characters for comments. |
c363c09e1f44
Misc: add CONTRIBUTE.md and STYLE.md
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
17 |
c363c09e1f44
Misc: add CONTRIBUTE.md and STYLE.md
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
18 ### Braces |
c363c09e1f44
Misc: add CONTRIBUTE.md and STYLE.md
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
19 |
c363c09e1f44
Misc: add CONTRIBUTE.md and STYLE.md
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
20 Braces follow the K&R style, they are never placed on their own lines except for |
c363c09e1f44
Misc: add CONTRIBUTE.md and STYLE.md
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
21 function definitions. |
c363c09e1f44
Misc: add CONTRIBUTE.md and STYLE.md
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
22 |
c363c09e1f44
Misc: add CONTRIBUTE.md and STYLE.md
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
23 In addition to the K&R style, they are required everywhere even if a block |
c363c09e1f44
Misc: add CONTRIBUTE.md and STYLE.md
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
24 contains only one statement. |
c363c09e1f44
Misc: add CONTRIBUTE.md and STYLE.md
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
25 |
c363c09e1f44
Misc: add CONTRIBUTE.md and STYLE.md
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
26 if (condition) { |
c363c09e1f44
Misc: add CONTRIBUTE.md and STYLE.md
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
27 apply(); |
c363c09e1f44
Misc: add CONTRIBUTE.md and STYLE.md
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
28 add(); |
c363c09e1f44
Misc: add CONTRIBUTE.md and STYLE.md
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
29 } else { |
c363c09e1f44
Misc: add CONTRIBUTE.md and STYLE.md
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
30 ok(); |
c363c09e1f44
Misc: add CONTRIBUTE.md and STYLE.md
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
31 } |
c363c09e1f44
Misc: add CONTRIBUTE.md and STYLE.md
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
32 |
c363c09e1f44
Misc: add CONTRIBUTE.md and STYLE.md
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
33 if (condition) { |
c363c09e1f44
Misc: add CONTRIBUTE.md and STYLE.md
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
34 validate(); |
c363c09e1f44
Misc: add CONTRIBUTE.md and STYLE.md
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
35 } |
c363c09e1f44
Misc: add CONTRIBUTE.md and STYLE.md
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
36 |
c363c09e1f44
Misc: add CONTRIBUTE.md and STYLE.md
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
37 And a lambda has its braces on the same lines too: |
c363c09e1f44
Misc: add CONTRIBUTE.md and STYLE.md
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
38 |
c363c09e1f44
Misc: add CONTRIBUTE.md and STYLE.md
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
39 sort([&] (object&) { |
c363c09e1f44
Misc: add CONTRIBUTE.md and STYLE.md
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
40 return true; |
c363c09e1f44
Misc: add CONTRIBUTE.md and STYLE.md
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
41 }); |
c363c09e1f44
Misc: add CONTRIBUTE.md and STYLE.md
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
42 |
c363c09e1f44
Misc: add CONTRIBUTE.md and STYLE.md
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
43 ### Naming |
c363c09e1f44
Misc: add CONTRIBUTE.md and STYLE.md
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
44 |
c363c09e1f44
Misc: add CONTRIBUTE.md and STYLE.md
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
45 - English names, |
c363c09e1f44
Misc: add CONTRIBUTE.md and STYLE.md
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
46 - Member variables starts with `m_`, |
c363c09e1f44
Misc: add CONTRIBUTE.md and STYLE.md
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
47 - No hungarian notation. |
c363c09e1f44
Misc: add CONTRIBUTE.md and STYLE.md
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
48 |
c363c09e1f44
Misc: add CONTRIBUTE.md and STYLE.md
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
49 All functions, variables, class names are always camelCase. Only namespaces must |
c363c09e1f44
Misc: add CONTRIBUTE.md and STYLE.md
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
50 be all lowercase, short and concise. Please note that you should not create a |
c363c09e1f44
Misc: add CONTRIBUTE.md and STYLE.md
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
51 new namespace except irccd and anonymous ones. |
c363c09e1f44
Misc: add CONTRIBUTE.md and STYLE.md
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
52 |
c363c09e1f44
Misc: add CONTRIBUTE.md and STYLE.md
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
53 int m_variable; |
c363c09e1f44
Misc: add CONTRIBUTE.md and STYLE.md
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
54 |
c363c09e1f44
Misc: add CONTRIBUTE.md and STYLE.md
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
55 void myFunction() |
c363c09e1f44
Misc: add CONTRIBUTE.md and STYLE.md
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
56 { |
c363c09e1f44
Misc: add CONTRIBUTE.md and STYLE.md
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
57 } |
c363c09e1f44
Misc: add CONTRIBUTE.md and STYLE.md
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
58 |
c363c09e1f44
Misc: add CONTRIBUTE.md and STYLE.md
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
59 ### Files |
c363c09e1f44
Misc: add CONTRIBUTE.md and STYLE.md
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
60 |
c363c09e1f44
Misc: add CONTRIBUTE.md and STYLE.md
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
61 - Use `.cpp` and `.hpp` as file extensions, |
c363c09e1f44
Misc: add CONTRIBUTE.md and STYLE.md
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
62 - Filenames are all lowercase. |
c363c09e1f44
Misc: add CONTRIBUTE.md and STYLE.md
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
63 |
c363c09e1f44
Misc: add CONTRIBUTE.md and STYLE.md
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
64 ### Comments |
c363c09e1f44
Misc: add CONTRIBUTE.md and STYLE.md
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
65 |
c363c09e1f44
Misc: add CONTRIBUTE.md and STYLE.md
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
66 Avoid useless comments in source files. Comment complex things or why it is done |
c363c09e1f44
Misc: add CONTRIBUTE.md and STYLE.md
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
67 like this. However any public function in the .hpp **must** be documented as |
c363c09e1f44
Misc: add CONTRIBUTE.md and STYLE.md
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
68 doxygen without exception. |
c363c09e1f44
Misc: add CONTRIBUTE.md and STYLE.md
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
69 |
c363c09e1f44
Misc: add CONTRIBUTE.md and STYLE.md
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
70 /* |
c363c09e1f44
Misc: add CONTRIBUTE.md and STYLE.md
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
71 * Multi line comments look like |
c363c09e1f44
Misc: add CONTRIBUTE.md and STYLE.md
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
72 * this. |
c363c09e1f44
Misc: add CONTRIBUTE.md and STYLE.md
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
73 */ |
c363c09e1f44
Misc: add CONTRIBUTE.md and STYLE.md
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
74 |
c363c09e1f44
Misc: add CONTRIBUTE.md and STYLE.md
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
75 // Short comment |
c363c09e1f44
Misc: add CONTRIBUTE.md and STYLE.md
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
76 |
c363c09e1f44
Misc: add CONTRIBUTE.md and STYLE.md
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
77 ### Includes |
c363c09e1f44
Misc: add CONTRIBUTE.md and STYLE.md
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
78 |
c363c09e1f44
Misc: add CONTRIBUTE.md and STYLE.md
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
79 The includes should always come in the following order. |
c363c09e1f44
Misc: add CONTRIBUTE.md and STYLE.md
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
80 |
c363c09e1f44
Misc: add CONTRIBUTE.md and STYLE.md
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
81 1. C++ headers |
c363c09e1f44
Misc: add CONTRIBUTE.md and STYLE.md
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
82 2. C header |
c363c09e1f44
Misc: add CONTRIBUTE.md and STYLE.md
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
83 3. Third party libraries |
c363c09e1f44
Misc: add CONTRIBUTE.md and STYLE.md
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
84 4. Application headers in "" |
c363c09e1f44
Misc: add CONTRIBUTE.md and STYLE.md
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
85 |
c363c09e1f44
Misc: add CONTRIBUTE.md and STYLE.md
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
86 #include <cstring> |
c363c09e1f44
Misc: add CONTRIBUTE.md and STYLE.md
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
87 #include <cerrno> |
c363c09e1f44
Misc: add CONTRIBUTE.md and STYLE.md
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
88 |
c363c09e1f44
Misc: add CONTRIBUTE.md and STYLE.md
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
89 #include <sys/stat.h> |
c363c09e1f44
Misc: add CONTRIBUTE.md and STYLE.md
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
90 |
c363c09e1f44
Misc: add CONTRIBUTE.md and STYLE.md
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
91 #include <libircclient.h> |
c363c09e1f44
Misc: add CONTRIBUTE.md and STYLE.md
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
92 |
c363c09e1f44
Misc: add CONTRIBUTE.md and STYLE.md
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
93 #include "foo.h" |
c363c09e1f44
Misc: add CONTRIBUTE.md and STYLE.md
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
94 |
c363c09e1f44
Misc: add CONTRIBUTE.md and STYLE.md
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
95 **Note**: always use C++ headers for C equivalent, stdio.h -> cstdio, etc. |
c363c09e1f44
Misc: add CONTRIBUTE.md and STYLE.md
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
96 |
c363c09e1f44
Misc: add CONTRIBUTE.md and STYLE.md
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
97 ### Commit messages |
c363c09e1f44
Misc: add CONTRIBUTE.md and STYLE.md
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
98 |
c363c09e1f44
Misc: add CONTRIBUTE.md and STYLE.md
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
99 Commit messages are written using the following syntax: |
c363c09e1f44
Misc: add CONTRIBUTE.md and STYLE.md
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
100 |
c363c09e1f44
Misc: add CONTRIBUTE.md and STYLE.md
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
101 Topic: short message less than 80 characters |
c363c09e1f44
Misc: add CONTRIBUTE.md and STYLE.md
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
102 |
c363c09e1f44
Misc: add CONTRIBUTE.md and STYLE.md
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
103 Optional additional description if needed. |
c363c09e1f44
Misc: add CONTRIBUTE.md and STYLE.md
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
104 |
c363c09e1f44
Misc: add CONTRIBUTE.md and STYLE.md
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
105 Replace `Topic` with one of the following: |
c363c09e1f44
Misc: add CONTRIBUTE.md and STYLE.md
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
106 |
c363c09e1f44
Misc: add CONTRIBUTE.md and STYLE.md
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
107 - **CMake**: for the build system, |
c363c09e1f44
Misc: add CONTRIBUTE.md and STYLE.md
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
108 - **Docs**: for the documentation, |
c363c09e1f44
Misc: add CONTRIBUTE.md and STYLE.md
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
109 - **Irccd**: for the `irccd(1)` daemon, |
c363c09e1f44
Misc: add CONTRIBUTE.md and STYLE.md
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
110 - **Irccdctl**: for the `irccdctl(1)` utility, |
c363c09e1f44
Misc: add CONTRIBUTE.md and STYLE.md
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
111 - **Misc**: for miscellaneous files, |
c363c09e1f44
Misc: add CONTRIBUTE.md and STYLE.md
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
112 - **Tests**: for the unit tests, |
c363c09e1f44
Misc: add CONTRIBUTE.md and STYLE.md
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
113 - **Plugin xyz**: for a specific plugin (e.g. Plugin hangman:). |