source: branches/ticket_150/CodingStyle.txt@ 869

Last change on this file since 869 was 619, checked in by Steven Levine, 18 years ago

Correct usage

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 3.0 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 statment 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 varibles 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 with 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
164Memory
165
166 - Check all malloc/realloc/strdup/DosAllocMem calls
167 Use xmalloc in non-time critical code
168 Use xrealloc in non-time critical code
169 Use xstrdup in non-time critical code
170
171 - Use xfree rather than free
172
173 - If buffer overflow possible, check for it.
174
175Windows
176
177 - Check all WinCreateWindow calls
178 - Check QWL_USER pointer data
179
180Error notifications
181
182 DosBeep(50,100) Alert user to operator error
183 Use only when failure reason is obvious
184
185 saymsg Alert user to operator error with popup
186
187 Runtime_Error Report "should not occur" errors
188 Dos_Error
189 Win_Error
190
191$Id: CodingStyle.txt 619 2007-04-20 19:21:09Z stevenhl $
Note: See TracBrowser for help on using the repository browser.