source: trunk/CodingStyle.txt@ 1777

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

Correct typos.
Add Disabling Code section.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 3.3 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
164Disabling code
165
166 When disabling multiple lines of code, prefer
167
168 #if 0
169 #endif
170
171 to
172
173 /*
174 */
175
176 comments or // comments.
177
178 When disabling multiple lines of code, it is acceptable to use // comments
179 to disable a single line. The // should be followed by a trailing space
180
181 // DbgMsg("here");
182
183Memory
184
185 - Check all malloc/realloc/strdup/DosAllocMem calls
186 Use xmalloc in non-time critical code
187 Use xrealloc in non-time critical code
188 Use xstrdup in non-time critical code
189
190 - Use xfree rather than free
191
192 - If buffer overflow possible, check for it.
193
194Windows
195
196 - Check all WinCreateWindow calls
197 - Check QWL_USER pointer data
198
199Error notifications
200
201 DosBeep(50,100) Alert user to operator error
202 Use only when failure reason is obvious
203
204 saymsg Alert user to operator error with popup
205
206 Runtime_Error Report "should not occur" errors
207 Dos_Error
208 Win_Error
209
210$Id: CodingStyle.txt 1776 2014-06-12 15:53:06Z stevenhl $
Note: See TracBrowser for help on using the repository browser.