source: trunk/CodingStyle.txt@ 1844

Last change on this file since 1844 was 1779, checked in by Steven Levine, 11 years ago

Update commenting notes.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 3.5 KB
Line 
1
2Coding Style Guidelines
3========================
4
5Line lengths
6
7 Try to keep lines less than 80 characters.
8
9 Break lines after logical separators.
10
11 Vertically align like constructs.
12
13 func(arg1,
14 arg2);
15
16Indents
17
18 Place function definition { in column 1
19
20 Place function definition } in column 1
21
22 Indent nested constructs by 2 characters
23
24 void func()
25 {
26 statement;
27 if (expr)
28 statement2;
29 }
30
31Tabs
32
33 Use only 8 column tabs.
34
35Layouts
36
37 if (expr)
38 statement;
39
40 // If expr and statement are brief single line is OK.
41 if (expr) statement;
42
43 // If statement is long, split logically and use braces.
44 if (expr) {
45 statement_part1...
46 restoflongstatement;
47 }
48
49 if (expr)
50 statement;
51 else
52 statement2;
53
54 if (expr1) {
55 statement1;
56 statement2;
57 }
58 else if (expr2) {
59 }
60 else {
61 }
62
63 // If expression wrapped, align like constructs vertically.
64 if (expr1 &&
65 expr2))
66 {
67 }
68
69 // Prefer expression sense that places shorter statement list first.
70 if (!expr)
71 ReportError();
72 else {
73 statement1;
74 ...;
75 statementn;
76 }
77
78 while (expr) {
79 }
80
81 for (expr; expr; expr) {
82 }
83
84 typedef struct {
85
86 } TYPENAME;
87
88Variable definitions
89
90 Define one variable per line. They are easier to find and understand.
91
92 INT a;
93 INT *pb;
94
95 not
96
97 INT a,*b;
98
99Variable naming
100
101 Prefer Hungarian notation and CamelCaps for global variables.
102
103 BOOL fAGlobalFlag;
104
105 Prefer lower case and underscores for local variables.
106
107 BOOL is_ok;
108
109 Local variables can be short as long as meaning is clear.
110
111 BOOL ok;
112
113 Underscores can be omitted if name remains readable.
114
115 USHORT maxcnt;
116
117Spaces
118
119 Separate keywords from leading paren with 1 space.
120
121 if (expr) statement;
122
123 No spaces between function name and leading paren.
124 No spaces between last arg and trailing paren.
125
126 func()
127
128 Follow separating commas and semicolons with a space.
129
130 x = func(a, c)
131
132 Surround binary operators with a leading and trailing spaces.
133
134 x = a + b
135
136 Try to avoid spurious internal and trailing whitespace.
137
138Expressions
139
140 Do not use superfluous parens.
141
142 Prefer
143
144 return 0;
145
146 to
147
148 return (0);
149
150 Do not use superfluous parens when operator precedence will do the
151 right thing.
152
153 Prefer
154
155 if (a & mask && c)
156
157 to
158
159 if ((a & mask) && c)
160
161 Avoid nested ternary conditionals (i.e. ? :). They are hard to read and
162 rarely generate better code than switch or if statement.
163
164Commenting code
165
166 Prefer javadoc style comments for function headers.
167
168 When usings // comments, // should be followed by a space.
169
170 Avoid using /* */ comments to disable code. They can be hard to see.
171
172Disabling code
173
174 When disabling multiple lines of code, prefer
175
176 #if 0
177 #endif
178
179 to
180
181 /*
182 */
183
184 comments or // comments.
185
186 When disabling multiple lines of code, it is acceptable to use // comments
187 to disable a single line. The // should be followed by a trailing space
188
189 // DbgMsg("here");
190
191Memory
192
193 - Check all malloc/realloc/strdup/DosAllocMem calls
194 Use xmalloc in non-time critical code
195 Use xrealloc in non-time critical code
196 Use xstrdup in non-time critical code
197
198 - Use xfree rather than free
199
200 - If buffer overflow possible, check for it.
201
202Windows
203
204 - Check all WinCreateWindow calls
205 - Check QWL_USER pointer data
206
207Error notifications
208
209 DosBeep(50,100) Alert user to operator error
210 Use only when failure reason is obvious
211
212 saymsg Alert user to operator error with popup
213
214 Runtime_Error Report "should not occur" errors
215 Dos_Error
216 Win_Error
217
218$Id: CodingStyle.txt 1779 2014-06-26 22:32:51Z stevenhl $
Note: See TracBrowser for help on using the repository browser.