ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/trunk/OOPSE-2.0/doc/cppstyle.html
Revision: 1560
Committed: Tue Oct 12 19:08:46 2004 UTC (19 years, 8 months ago) by tim
Content type: text/html
File size: 266086 byte(s)
Log Message:
adding c++ coding style

File Contents

# Content
1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
2 <!-- saved from url=(0043)cppstyle.html -->
3 <html xmlns:v="urn:schemas-microsoft-com:vml"
4 xmlns:o="urn:schemas-microsoft-com:office:office"
5 xmlns:w="urn:schemas-microsoft-com:office:word"
6 xmlns:st1="urn:schemas-microsoft-com:office:smarttags"
7 xmlns="http://www.w3.org/TR/REC-html40">
8
9 <head>
10 <meta http-equiv=Content-Type content="text/html; charset=iso-8859-1">
11 <meta name=ProgId content=Word.Document>
12 <meta name=Generator content="Microsoft Word 10">
13 <meta name=Originator content="Microsoft Word 10">
14 <link rel=File-List href="OOPSE-2.0%20C++%20coding_style.files/filelist.xml">
15 <link rel=Edit-Time-Data
16 href="OOPSE-2.0%20C++%20coding_style.files/editdata.mso">
17 <!--[if !mso]>
18 <style>
19 v\:* {behavior:url(#default#VML);}
20 o\:* {behavior:url(#default#VML);}
21 w\:* {behavior:url(#default#VML);}
22 .shape {behavior:url(#default#VML);}
23 </style>
24 <![endif]-->
25 <title>C++ Programming Style Guidelines</title>
26 <o:SmartTagType namespaceuri="urn:schemas-microsoft-com:office:smarttags"
27 name="City"/>
28 <o:SmartTagType namespaceuri="urn:schemas-microsoft-com:office:smarttags"
29 name="place"/>
30 <!--[if gte mso 9]><xml>
31 <o:DocumentProperties>
32 <o:Author>tim</o:Author>
33 <o:LastAuthor>Teng</o:LastAuthor>
34 <o:Revision>14</o:Revision>
35 <o:TotalTime>97</o:TotalTime>
36 <o:Created>2004-09-17T20:46:00Z</o:Created>
37 <o:LastSaved>2004-09-18T03:55:00Z</o:LastSaved>
38 <o:Pages>7</o:Pages>
39 <o:Words>6327</o:Words>
40 <o:Characters>36068</o:Characters>
41 <o:Company>University of Notre Dame</o:Company>
42 <o:Lines>300</o:Lines>
43 <o:Paragraphs>84</o:Paragraphs>
44 <o:CharactersWithSpaces>42311</o:CharactersWithSpaces>
45 <o:Version>10.3501</o:Version>
46 </o:DocumentProperties>
47 </xml><![endif]--><!--[if gte mso 9]><xml>
48 <w:WordDocument>
49 <w:GrammarState>Clean</w:GrammarState>
50 <w:Compatibility>
51 <w:UseFELayout/>
52 </w:Compatibility>
53 <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel>
54 </w:WordDocument>
55 </xml><![endif]--><!--[if !mso]><object
56 classid="clsid:38481807-CA0E-42D2-BF39-B33AF135CC4D" id=ieooui></object>
57 <style>
58 st1\:*{behavior:url(#ieooui) }
59 </style>
60 <![endif]-->
61 <link rel=Stylesheet type="text/css" media=all
62 href="style.css">
63 <style>
64 <!--
65 /* Font Definitions */
66 @font-face
67 {font-family:SimSun;
68 panose-1:2 1 6 0 3 1 1 1 1 1;
69 mso-font-alt:SimSun;
70 mso-font-charset:134;
71 mso-generic-font-family:auto;
72 mso-font-pitch:variable;
73 mso-font-signature:3 135135232 16 0 262145 0;}
74 @font-face
75 {font-family:fixed;
76 panose-1:0 0 0 0 0 0 0 0 0 0;
77 mso-font-alt:"Times New Roman";
78 mso-font-charset:0;
79 mso-generic-font-family:roman;
80 mso-font-format:other;
81 mso-font-pitch:auto;
82 mso-font-signature:0 0 0 0 0 0;}
83 @font-face
84 {font-family:SimSun;
85 panose-1:2 1 6 0 3 1 1 1 1 1;
86 mso-font-charset:134;
87 mso-generic-font-family:auto;
88 mso-font-pitch:variable;
89 mso-font-signature:3 135135232 16 0 262145 0;}
90 /* Style Definitions */
91 p.MsoNormal, li.MsoNormal, div.MsoNormal
92 {mso-style-parent:"";
93 margin:0cm;
94 margin-bottom:.0001pt;
95 mso-pagination:widow-orphan;
96 font-size:12.0pt;
97 font-family:"Times New Roman";
98 mso-fareast-font-family:SimSun;}
99 h1
100 {mso-margin-top-alt:auto;
101 margin-right:0cm;
102 mso-margin-bottom-alt:auto;
103 margin-left:0cm;
104 mso-pagination:widow-orphan;
105 mso-outline-level:1;
106 font-size:12.0pt;
107 font-weight:bold;}
108 h2
109 {mso-margin-top-alt:auto;
110 margin-right:0cm;
111 mso-margin-bottom-alt:auto;
112 margin-left:0cm;
113 mso-pagination:widow-orphan;
114 mso-outline-level:2;
115 font-size:10.0pt;
116 font-weight:bold;}
117 h3
118 {mso-margin-top-alt:auto;
119 margin-right:0cm;
120 mso-margin-bottom-alt:auto;
121 margin-left:0cm;
122 mso-pagination:widow-orphan;
123 mso-outline-level:3;
124 font-size:10.0pt;
125 font-weight:bold;}
126 h4
127 {mso-margin-top-alt:auto;
128 margin-right:0cm;
129 mso-margin-bottom-alt:auto;
130 margin-left:0cm;
131 mso-pagination:widow-orphan;
132 mso-outline-level:4;
133 font-size:10.0pt;
134 font-weight:bold;}
135 a:link, span.MsoHyperlink
136 {mso-ansi-font-size:10.0pt;
137 mso-bidi-font-size:10.0pt;
138 font-family:Arial;
139 mso-ascii-font-family:Arial;
140 mso-hansi-font-family:Arial;
141 mso-bidi-font-family:Arial;
142 color:blue;
143 text-decoration:underline;
144 text-underline:single;}
145 a:visited, span.MsoHyperlinkFollowed
146 {mso-ansi-font-size:10.0pt;
147 mso-bidi-font-size:10.0pt;
148 font-family:Arial;
149 mso-ascii-font-family:Arial;
150 mso-hansi-font-family:Arial;
151 mso-bidi-font-family:Arial;
152 color:blue;
153 text-decoration:underline;
154 text-underline:single;}
155 p
156 {mso-margin-top-alt:auto;
157 margin-right:0cm;
158 mso-margin-bottom-alt:auto;
159 margin-left:0cm;
160 mso-pagination:widow-orphan;
161 font-size:10.0pt;
162 mso-fareast-font-family:SimSun;}
163 code
164 {mso-ansi-font-size:9.0pt;
165 mso-bidi-font-size:9.0pt;
166 mso-fareast-font-family:SimSun;
167 mso-bidi-font-family:"Courier New";}
168 pre
169 {margin-top:0cm;
170 margin-right:0cm;
171 margin-bottom:0cm;
172 margin-left:20.0pt;
173 margin-bottom:.0001pt;
174 mso-pagination:widow-orphan;
175 tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
176 font-size:9.0pt;
177 mso-fareast-font-family:SimSun;
178 mso-bidi-font-family:"Courier New";}
179 tt
180 {mso-ansi-font-size:12.0pt;
181 mso-bidi-font-size:12.0pt;
182 mso-fareast-font-family:SimSun;
183 mso-bidi-font-family:"Courier New";}
184 p.comment, li.comment, div.comment
185 {mso-style-name:comment;
186 mso-margin-top-alt:auto;
187 margin-right:0cm;
188 mso-margin-bottom-alt:auto;
189 margin-left:0cm;
190 mso-pagination:widow-orphan;
191 font-size:10.0pt;
192 mso-fareast-font-family:SimSun;}
193 p.normal, li.normal, div.normal
194 {mso-style-name:normal;
195 mso-margin-top-alt:auto;
196 margin-right:0cm;
197 mso-margin-bottom-alt:auto;
198 margin-left:0cm;
199 mso-pagination:widow-orphan;
200 font-size:10.0pt;
201 mso-fareast-font-family:SimSun;}
202 p.menu, li.menu, div.menu
203 {mso-style-name:menu;
204 mso-margin-top-alt:auto;
205 margin-right:0cm;
206 mso-margin-bottom-alt:auto;
207 margin-left:0cm;
208 mso-pagination:widow-orphan;
209 background:#004477;
210 font-size:10.0pt;
211 mso-fareast-font-family:SimSun;}
212 p.title, li.title, div.title
213 {mso-style-name:title;
214 mso-margin-top-alt:auto;
215 margin-right:0cm;
216 mso-margin-bottom-alt:auto;
217 margin-left:0cm;
218 text-align:right;
219 mso-pagination:widow-orphan;
220 background:#004477;
221 font-size:24.0pt;
222 mso-fareast-font-family:SimSun;
223 font-weight:bold;}
224 p.smalltitle, li.smalltitle, div.smalltitle
225 {mso-style-name:smalltitle;
226 mso-margin-top-alt:auto;
227 margin-right:0cm;
228 mso-margin-bottom-alt:auto;
229 margin-left:0cm;
230 text-align:right;
231 mso-pagination:widow-orphan;
232 background:#004477;
233 font-size:18.0pt;
234 mso-fareast-font-family:SimSun;
235 font-weight:bold;
236 font-style:italic;}
237 p.footnote, li.footnote, div.footnote
238 {mso-style-name:footnote;
239 mso-margin-top-alt:auto;
240 margin-right:0cm;
241 mso-margin-bottom-alt:auto;
242 margin-left:0cm;
243 mso-pagination:widow-orphan;
244 font-size:8.0pt;
245 mso-fareast-font-family:SimSun;}
246 p.address, li.address, div.address
247 {mso-style-name:address;
248 mso-margin-top-alt:auto;
249 margin-right:0cm;
250 mso-margin-bottom-alt:auto;
251 margin-left:0cm;
252 mso-pagination:widow-orphan;
253 font-size:12.0pt;
254 mso-fareast-font-family:SimSun;
255 font-weight:bold;}
256 p.access, li.access, div.access
257 {mso-style-name:access;
258 mso-margin-top-alt:auto;
259 margin-right:0cm;
260 mso-margin-bottom-alt:auto;
261 margin-left:0cm;
262 mso-pagination:widow-orphan;
263 background:#990000;
264 font-size:8.0pt;
265 mso-fareast-font-family:SimSun;}
266 p.noaccess, li.noaccess, div.noaccess
267 {mso-style-name:noaccess;
268 mso-margin-top-alt:auto;
269 margin-right:0cm;
270 mso-margin-bottom-alt:auto;
271 margin-left:0cm;
272 mso-pagination:widow-orphan;
273 background:#CCBBBB;
274 font-size:8.0pt;
275 mso-fareast-font-family:SimSun;}
276 p.legend, li.legend, div.legend
277 {mso-style-name:legend;
278 mso-margin-top-alt:auto;
279 margin-right:0cm;
280 mso-margin-bottom-alt:auto;
281 margin-left:0cm;
282 mso-pagination:widow-orphan;
283 background:#CCAAAA;
284 font-size:8.0pt;
285 mso-fareast-font-family:SimSun;}
286 p.trendentry, li.trendentry, div.trendentry
287 {mso-style-name:trendentry;
288 mso-margin-top-alt:auto;
289 margin-right:0cm;
290 mso-margin-bottom-alt:auto;
291 margin-left:0cm;
292 mso-pagination:widow-orphan;
293 font-size:12.0pt;
294 mso-fareast-font-family:SimSun;}
295 p.navigator, li.navigator, div.navigator
296 {mso-style-name:navigator;
297 mso-margin-top-alt:auto;
298 margin-right:0cm;
299 mso-margin-bottom-alt:auto;
300 margin-left:0cm;
301 mso-pagination:widow-orphan;
302 background:#CCBBBB;
303 font-size:10.0pt;
304 mso-fareast-font-family:SimSun;
305 font-weight:bold;}
306 p.recom, li.recom, div.recom
307 {mso-style-name:recom;
308 mso-margin-top-alt:auto;
309 margin-right:0cm;
310 mso-margin-bottom-alt:auto;
311 margin-left:0cm;
312 mso-pagination:widow-orphan;
313 background:#BBCCEE;
314 font-size:10.0pt;
315 mso-fareast-font-family:SimSun;
316 font-weight:bold;}
317 p.practice, li.practice, div.practice
318 {mso-style-name:practice;
319 mso-margin-top-alt:auto;
320 margin-right:0cm;
321 mso-margin-bottom-alt:auto;
322 margin-left:0cm;
323 mso-pagination:widow-orphan;
324 background:#BBCCEE;
325 font-size:10.0pt;
326 mso-fareast-font-family:SimSun;
327 font-weight:bold;}
328 p.rationale, li.rationale, div.rationale
329 {mso-style-name:rationale;
330 mso-margin-top-alt:auto;
331 margin-right:0cm;
332 mso-margin-bottom-alt:auto;
333 margin-left:0cm;
334 mso-pagination:widow-orphan;
335 font-size:9.0pt;
336 mso-fareast-font-family:SimSun;}
337 p.cvtitle, li.cvtitle, div.cvtitle
338 {mso-style-name:cvtitle;
339 mso-margin-top-alt:auto;
340 margin-right:0cm;
341 mso-margin-bottom-alt:auto;
342 margin-left:0cm;
343 text-align:center;
344 mso-pagination:widow-orphan;
345 background:#004477;
346 font-size:24.0pt;
347 mso-fareast-font-family:SimSun;
348 font-weight:bold;}
349 p.cvsmalltitle, li.cvsmalltitle, div.cvsmalltitle
350 {mso-style-name:cvsmalltitle;
351 mso-margin-top-alt:auto;
352 margin-right:0cm;
353 mso-margin-bottom-alt:auto;
354 margin-left:0cm;
355 mso-pagination:widow-orphan;
356 background:#004477;
357 font-size:18.0pt;
358 mso-fareast-font-family:SimSun;}
359 p.cvprompt, li.cvprompt, div.cvprompt
360 {mso-style-name:cvprompt;
361 mso-margin-top-alt:auto;
362 margin-right:0cm;
363 mso-margin-bottom-alt:auto;
364 margin-left:0cm;
365 mso-pagination:widow-orphan;
366 font-size:10.0pt;
367 mso-fareast-font-family:SimSun;
368 font-weight:bold;}
369 p.warning, li.warning, div.warning
370 {mso-style-name:warning;
371 mso-margin-top-alt:auto;
372 margin-right:0cm;
373 mso-margin-bottom-alt:auto;
374 margin-left:0cm;
375 mso-pagination:widow-orphan;
376 background:yellow;
377 font-size:10.0pt;
378 mso-fareast-font-family:SimSun;}
379 p.copyright, li.copyright, div.copyright
380 {mso-style-name:copyright;
381 mso-margin-top-alt:auto;
382 margin-right:0cm;
383 mso-margin-bottom-alt:auto;
384 margin-left:0cm;
385 mso-pagination:widow-orphan;
386 font-size:7.0pt;
387 mso-fareast-font-family:SimSun;}
388 p.small, li.small, div.small
389 {mso-style-name:small;
390 mso-margin-top-alt:auto;
391 margin-right:0cm;
392 mso-margin-bottom-alt:auto;
393 margin-left:0cm;
394 mso-pagination:widow-orphan;
395 font-size:8.0pt;
396 mso-fareast-font-family:SimSun;}
397 span.GramE
398 {mso-style-name:"";
399 mso-gram-e:yes;}
400 @page Section1
401 {size:612.0pt 792.0pt;
402 margin:72.0pt 90.0pt 72.0pt 90.0pt;
403 mso-header-margin:36.0pt;
404 mso-footer-margin:36.0pt;
405 mso-paper-source:0;}
406 div.Section1
407 {page:Section1;}
408 /* List Definitions */
409 @list l0
410 {mso-list-id:891768119;
411 mso-list-template-ids:317624060;}
412 @list l0:level1
413 {mso-level-number-format:bullet;
414 mso-level-text:\F0B7;
415 mso-level-tab-stop:36.0pt;
416 mso-level-number-position:left;
417 text-indent:-18.0pt;
418 mso-ansi-font-size:10.0pt;
419 font-family:Symbol;}
420 @list l0:level2
421 {mso-level-number-format:bullet;
422 mso-level-text:o;
423 mso-level-tab-stop:72.0pt;
424 mso-level-number-position:left;
425 text-indent:-18.0pt;
426 mso-ansi-font-size:10.0pt;
427 font-family:"Courier New";
428 mso-bidi-font-family:"Times New Roman";}
429 @list l0:level3
430 {mso-level-tab-stop:108.0pt;
431 mso-level-number-position:left;
432 text-indent:-18.0pt;}
433 @list l0:level4
434 {mso-level-tab-stop:144.0pt;
435 mso-level-number-position:left;
436 text-indent:-18.0pt;}
437 @list l0:level5
438 {mso-level-tab-stop:180.0pt;
439 mso-level-number-position:left;
440 text-indent:-18.0pt;}
441 @list l0:level6
442 {mso-level-tab-stop:216.0pt;
443 mso-level-number-position:left;
444 text-indent:-18.0pt;}
445 @list l0:level7
446 {mso-level-tab-stop:252.0pt;
447 mso-level-number-position:left;
448 text-indent:-18.0pt;}
449 @list l0:level8
450 {mso-level-tab-stop:288.0pt;
451 mso-level-number-position:left;
452 text-indent:-18.0pt;}
453 @list l0:level9
454 {mso-level-tab-stop:324.0pt;
455 mso-level-number-position:left;
456 text-indent:-18.0pt;}
457 @list l1
458 {mso-list-id:923807935;
459 mso-list-template-ids:476496218;}
460 @list l1:level1
461 {mso-level-number-format:bullet;
462 mso-level-text:\F0B7;
463 mso-level-tab-stop:36.0pt;
464 mso-level-number-position:left;
465 text-indent:-18.0pt;
466 mso-ansi-font-size:10.0pt;
467 font-family:Symbol;}
468 @list l1:level2
469 {mso-level-number-format:bullet;
470 mso-level-text:o;
471 mso-level-tab-stop:72.0pt;
472 mso-level-number-position:left;
473 text-indent:-18.0pt;
474 mso-ansi-font-size:10.0pt;
475 font-family:"Courier New";
476 mso-bidi-font-family:"Times New Roman";}
477 @list l2
478 {mso-list-id:1731999742;
479 mso-list-template-ids:-1833422612;}
480 @list l2:level1
481 {mso-level-number-format:bullet;
482 mso-level-text:\F0B7;
483 mso-level-tab-stop:36.0pt;
484 mso-level-number-position:left;
485 text-indent:-18.0pt;
486 mso-ansi-font-size:10.0pt;
487 font-family:Symbol;}
488 @list l2:level2
489 {mso-level-tab-stop:72.0pt;
490 mso-level-number-position:left;
491 text-indent:-18.0pt;}
492 @list l2:level3
493 {mso-level-tab-stop:108.0pt;
494 mso-level-number-position:left;
495 text-indent:-18.0pt;}
496 @list l2:level4
497 {mso-level-tab-stop:144.0pt;
498 mso-level-number-position:left;
499 text-indent:-18.0pt;}
500 @list l2:level5
501 {mso-level-tab-stop:180.0pt;
502 mso-level-number-position:left;
503 text-indent:-18.0pt;}
504 @list l2:level6
505 {mso-level-tab-stop:216.0pt;
506 mso-level-number-position:left;
507 text-indent:-18.0pt;}
508 @list l2:level7
509 {mso-level-tab-stop:252.0pt;
510 mso-level-number-position:left;
511 text-indent:-18.0pt;}
512 @list l2:level8
513 {mso-level-tab-stop:288.0pt;
514 mso-level-number-position:left;
515 text-indent:-18.0pt;}
516 @list l2:level9
517 {mso-level-tab-stop:324.0pt;
518 mso-level-number-position:left;
519 text-indent:-18.0pt;}
520 @list l3
521 {mso-list-id:2136366238;
522 mso-list-template-ids:-1152741894;}
523 @list l3:level1
524 {mso-level-number-format:bullet;
525 mso-level-text:\F0B7;
526 mso-level-tab-stop:36.0pt;
527 mso-level-number-position:left;
528 text-indent:-18.0pt;
529 mso-ansi-font-size:10.0pt;
530 font-family:Symbol;}
531 ol
532 {margin-bottom:0cm;}
533 ul
534 {margin-bottom:0cm;}
535 .style1 {font-size: 10pt}
536 .style4 {font-family: fixed}
537 .style5 {font-size: 10}
538 .style6 {font-family: fixed; font-size: 10; }
539 .style7 {font-size: 12pt}
540 .style10 {font-size: 10.0pt}
541 .style12 {
542 font-family: Arial, Helvetica, sans-serif;
543 font-weight: bold;
544 }
545 .style13 {font-size: 7.5pt}
546 -->
547 </style>
548 <!--[if gte mso 10]>
549 <style>
550 /* Style Definitions */
551 table.MsoNormalTable
552 {mso-style-name:\666E\901A\8868\683C;
553 mso-tstyle-rowband-size:0;
554 mso-tstyle-colband-size:0;
555 mso-style-noshow:yes;
556 mso-style-parent:"";
557 mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
558 mso-para-margin:0cm;
559 mso-para-margin-bottom:.0001pt;
560 mso-pagination:widow-orphan;
561 font-size:10.0pt;
562 font-family:"Times New Roman";
563 mso-fareast-font-family:"Times New Roman";}
564 table.TableNormal
565 {mso-style-name:"Table Normal";
566 mso-tstyle-rowband-size:0;
567 mso-tstyle-colband-size:0;
568 mso-style-noshow:yes;
569 mso-style-parent:"";
570 mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
571 mso-para-margin:0cm;
572 mso-para-margin-bottom:.0001pt;
573 mso-pagination:widow-orphan;
574 font-size:10.0pt;
575 font-family:"Times New Roman";}
576 </style>
577 <![endif]-->
578 <meta content="Geotechnical Software Services" name=Author>
579 <meta
580 content="c++, c, programming, code, style, guideline, guidelines, recommendation, recommendations, layout, standard, conventions, standardization, naming, names, indentation, block, readability, maintainability, mixed case, suffix, prefix, statement, statements, conditional, white space, align, alignment comments, code complete, steve mcconnel, geosoft, geotechnical, software, services, stavanger, norway"
581 name=Keywords>
582 <meta
583 content="C++ Programming Style Guidelines. GeoSoft's 70+ style rules for C/C++ developers including naming conventions, code layout, commenting and more."
584 name=Description>
585 <!--[if gte mso 9]><xml>
586 <o:shapedefaults v:ext="edit" spidmax="1027"/>
587 </xml><![endif]--><!--[if gte mso 9]><xml>
588 <o:shapelayout v:ext="edit">
589 <o:idmap v:ext="edit" data="1"/>
590 </o:shapelayout></xml><![endif]-->
591 </head>
592
593 <body lang=ZH-CN link=blue vlink=blue style='tab-interval:36.0pt'>
594
595 <div class=Section1>
596
597 <table class=TableNormal border=0 cellspacing=0 cellpadding=0 style='mso-cellspacing:
598 0cm;mso-padding-alt:6.0pt 6.0pt 6.0pt 6.0pt'>
599 <tr style='mso-yfti-irow:0'>
600 <!--
601 *******************************************************************************
602 Document content on right hand side
603 *******************************************************************************
604 -->
605 <td style='padding:6.0pt 6.0pt 6.0pt 6.0pt'>
606 <h1 align=center style='text-align:center'><span lang=EN-US>C++ Programming
607 Style Guidelines <span class=GramE>for</span> OOPSE-2.0</span></h1>
608 <p align=center style='text-align:center'> <em>Version 1.0, September 2004 </em></p>
609 <p align=center style='text-align:center'><em><a href="http://www.oopse.org">OOPSE Developement Team</a></em></p> <p align=center style='text-align:center'><em>Department of Chemistry &amp; Biochemistry</em></p>
610 <p align=center style='text-align:center; font-style: italic;'>University of Notre Dame</p>
611 <p align=center style='text-align:center; font-style: italic;'>Notre Dame, IN 46556</p>
612 <p align=center style='text-align:center; font-style: italic;'> The original document is available at <a href="http://geosoft.no/development/cppstyle.html">http://geosoft.no/development/cppstyle.html </a> </p>
613 <div class=MsoNormal align=center style='text-align:center'><span lang=EN-US
614 style='font-size:10.0pt;font-family:Arial'>
615 <hr size=3 width="100%" align=center>
616 </span></div>
617 <h2><span lang=EN-US>Table of Content</span></h2>
618 <ul type=disc>
619 <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:
620 auto;mso-list:l0 level1 lfo3;tab-stops:list 36.0pt'><span lang=EN-US
621 style='font-size:10.0pt;font-family:Arial'><a
622 href="cppstyle.html#introduction">1
623 Introduction</a> <o:p></o:p></span></li>
624 <ul type=circle>
625 <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:
626 auto;mso-list:l0 level2 lfo3;tab-stops:list 72.0pt'><span lang=EN-US
627 style='font-size:10.0pt;font-family:Arial'><a
628 href="cppstyle.html#Layout_of_the_Recommendations">1.1
629 Layout of the Recommendations</a> <o:p></o:p></span></li>
630 <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:
631 auto;mso-list:l0 level2 lfo3;tab-stops:list 72.0pt'><span lang=EN-US
632 style='font-size:10.0pt;font-family:Arial'><a
633 href="cppstyle.html#Recommendation">1.2
634 Recommendations Importance</a> <o:p></o:p></span></li>
635 </ul>
636 <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:
637 auto;mso-list:l0 level1 lfo3;tab-stops:list 36.0pt'><span lang=EN-US
638 style='font-size:10.0pt;font-family:Arial'><a
639 href="cppstyle.html#General_Recomendations">2
640 General Recommendations</a> <o:p></o:p></span></li>
641 <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:
642 auto;mso-list:l0 level1 lfo3;tab-stops:list 36.0pt'><span lang=EN-US
643 style='font-size:10.0pt;font-family:Arial'><a
644 href="cppstyle.html#Naming_Conventions">3
645 Naming Conventions</a> <o:p></o:p></span></li>
646 <ul type=circle>
647 <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:
648 auto;mso-list:l0 level2 lfo3;tab-stops:list 72.0pt'><span lang=EN-US
649 style='font-size:10.0pt;font-family:Arial'><a
650 href="cppstyle.html#General">3.1 General</a>
651 <o:p></o:p></span></li>
652 <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:
653 auto;mso-list:l0 level2 lfo3;tab-stops:list 72.0pt'><span lang=EN-US
654 style='font-size:10.0pt;font-family:Arial'><a
655 href="cppstyle.html#Specific">3.2
656 Specific</a> <o:p></o:p></span></li>
657 </ul>
658 <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:
659 auto;mso-list:l0 level1 lfo3;tab-stops:list 36.0pt'><span lang=EN-US
660 style='font-size:10.0pt;font-family:Arial'><a
661 href="cppstyle.html#Files">4 Files</a> <o:p></o:p></span></li>
662 <ul type=circle>
663 <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:
664 auto;mso-list:l0 level2 lfo3;tab-stops:list 72.0pt'><span lang=EN-US
665 style='font-size:10.0pt;font-family:Arial'><a
666 href="cppstyle.html#Source_Files">4.1
667 Source Files</a> <o:p></o:p></span></li>
668 <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:
669 auto;mso-list:l0 level2 lfo3;tab-stops:list 72.0pt'><span lang=EN-US
670 style='font-size:10.0pt;font-family:Arial'><a
671 href="cppstyle.html#Include_Files">4.2
672 Include Files and Include Statements</a> <o:p></o:p></span></li>
673 </ul>
674 <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:
675 auto;mso-list:l0 level1 lfo3;tab-stops:list 36.0pt'><span lang=EN-US
676 style='font-size:10.0pt;font-family:Arial'><a
677 href="cppstyle.html#Statements">5
678 Statements</a> <o:p></o:p></span></li>
679 <ul type=circle>
680 <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:
681 auto;mso-list:l0 level2 lfo3;tab-stops:list 72.0pt'><span lang=EN-US
682 style='font-size:10.0pt;font-family:Arial'><a
683 href="cppstyle.html#Types">5.1 Types</a> <o:p></o:p></span></li>
684 <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:
685 auto;mso-list:l0 level2 lfo3;tab-stops:list 72.0pt'><span lang=EN-US
686 style='font-size:10.0pt;font-family:Arial'><a
687 href="cppstyle.html#Variables">5.2
688 Variables</a> <o:p></o:p></span></li>
689 <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:
690 auto;mso-list:l0 level2 lfo3;tab-stops:list 72.0pt'><span lang=EN-US
691 style='font-size:10.0pt;font-family:Arial'><a
692 href="cppstyle.html#Loops">5.3 Loops</a> <o:p></o:p></span></li>
693 <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:
694 auto;mso-list:l0 level2 lfo3;tab-stops:list 72.0pt'><span lang=EN-US
695 style='font-size:10.0pt;font-family:Arial'><a
696 href="cppstyle.html#Conditionals">5.4
697 Conditionals</a> <o:p></o:p></span></li>
698 <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:
699 auto;mso-list:l0 level2 lfo3;tab-stops:list 72.0pt'><span lang=EN-US
700 style='font-size:10.0pt;font-family:Arial'><a
701 href="cppstyle.html#Template">5.5
702 Template</a> <o:p></o:p></span></li>
703 <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:
704 auto;mso-list:l0 level2 lfo3;tab-stops:list 72.0pt'><span lang=EN-US
705 style='font-size:10.0pt;font-family:Arial'><a
706 href="cppstyle.html#Misc">5.6
707 Miscellaneous</a> <o:p></o:p></span></li>
708 </ul>
709 <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:
710 auto;mso-list:l0 level1 lfo3;tab-stops:list 36.0pt'><span lang=EN-US
711 style='font-size:10.0pt;font-family:Arial'><a
712 href="cppstyle.html#Layout_and_Comments">6
713 Layout and White Space</a><span style='mso-spacerun:yes'> </span><o:p></o:p></span></li>
714 <ul type=circle>
715 <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:
716 auto;mso-list:l0 level2 lfo3;tab-stops:list 72.0pt'><span lang=EN-US
717 style='font-size:10.0pt;font-family:Arial'><a
718 href="cppstyle.html#Layout">6.1 Layout</a>
719 <o:p></o:p></span></li>
720 <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:
721 auto;mso-list:l0 level2 lfo3;tab-stops:list 72.0pt'><span lang=EN-US
722 style='font-size:10.0pt;font-family:Arial'><a
723 href="cppstyle.html#White_Space">6.2
724 White space</a> <span class=MsoHyperlink><span style='color:windowtext;
725 text-decoration:none;text-underline:none'><o:p></o:p></span></span></span></li>
726 </ul>
727 <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:
728 auto;mso-list:l0 level1 lfo3;tab-stops:list 36.0pt'><span
729 class=MsoHyperlink><span lang=EN-US style='font-size:10.0pt'><a
730 href="cppstyle.html#Comments_and_Documentation">7 Comments and Documentation</a> <span style='mso-spacerun:yes'></span></span></span></li>
731 <ul type=circle>
732 <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:
733 auto;mso-list:l0 level2 lfo3;tab-stops:list 72.0pt'><span lang=EN-US
734 style='font-size:10.0pt;font-family:Arial'><a
735 href="cppstyle.html#Comment">7.1 Comment</a>
736 <o:p></o:p></span></li>
737 <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:
738 auto;mso-list:l0 level2 lfo3;tab-stops:list 72.0pt'><span lang=EN-US
739 style='font-size:10.0pt;font-family:Arial'><a
740 href="cppstyle.html#Documentation">7.2
741 Documentation</a> <span class=MsoHyperlink><span style='color:windowtext;
742 text-decoration:none;text-underline:none'><o:p></o:p></span></span></span></li>
743 </ul>
744 <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:
745 auto;mso-list:l0 level1 lfo3;tab-stops:list 36.0pt'><span lang=EN-US
746 style='font-size:10.0pt;font-family:Arial'><a
747 href="cppstyle.html#References">8
748 References</a> <o:p></o:p></span></li>
749 </ul>
750 <div class=MsoNormal align=center style='text-align:center'><span lang=EN-US
751 style='font-size:10.0pt;font-family:Arial'>
752 <hr size=3 width="100%" align=center>
753 </span></div>
754 <h2><a name=introduction></a><span lang=EN-US>1 Introduction</span></h2>
755 <p><span lang=EN-US>This document lists C++ coding recommendations common in
756 the C++ development community. </span></p>
757 <p><span lang=EN-US>The recommendations are based on established standards
758 collected from a number of sources, individual experience, local
759 requirements/needs, as well as suggestions given in <a
760 href="cppstyle.html#ref1">[1]</a> - <a
761 href="cppstyle.html#ref4">[4]</a>. </span></p>
762 <p><span lang=EN-US>There are several reasons for introducing a new guideline
763 rather than just referring to the ones above. Main reason is that these
764 guides are far too general in their scope and that more specific rules
765 (especially naming rules) need to be established. Also, the present guide has
766 an annotated form that makes it far easier to use during project code reviews
767 than most other existing guidelines. In addition, programming recommendations
768 generally tend to mix style issues with language technical issues in a
769 somewhat confusing manner. The present document does not contain any C++
770 technical recommendations at all, but focuses mainly on programming style.
771 For guidelines on C++ programming <em><span style='font-family:Arial'>style</span></em>
772 refer to the <a href="http://geosoft.no/cpp.html">C++ Programming Practice
773 Guidelines</a>. </span></p>
774 <p><span lang=EN-US>While a given development environment (IDE) can improve
775 the readability of code by access visibility, color coding, automatic
776 formatting and so on, the programmer should never <em><span style='font-family:
777 Arial'>rely</span></em> on such features. Source code should always be
778 considered <em><span style='font-family:Arial'>larger</span></em> than the
779 IDE it is developed within and should be written in <span class=GramE>a way
780 that maximize</span> its readability independent of any IDE. </span></p>
781 <h3><a name="Layout_of_the_Recommendations"></a><span lang=EN-US>1.1 Layout
782 of the Recommendations.</span></h3>
783 <p><span lang=EN-US>The recommendations are grouped by topic and each
784 recommendation is numbered to make it easier to refer to during reviews. </span></p>
785 <p><span lang=EN-US>Layout of the recommendations is as follows: </span></p>
786 <table class=TableNormal border=1 cellpadding=0 width="100%"
787 style='width:100.0%;mso-cellspacing:1.5pt;mso-padding-alt:0cm 5.4pt 0cm 5.4pt'>
788 <tr style='mso-yfti-irow:0'>
789 <td colspan="2" style='background:#BBCCEE;padding:.75pt .75pt .75pt .75pt'>
790 <p class=MsoNormal><b><span lang=EN-US style='font-size:10.0pt;font-family:
791 Arial'>Guideline short description <o:p></o:p></span></b></p>
792 </td>
793 </tr>
794 <tr style='mso-yfti-irow:1'>
795 <td style='padding:.75pt .75pt .75pt .75pt'>
796 <p class=MsoNormal><tt><span lang=EN-US style='font-size:10.0pt'>Good example if
797 applicable</span></tt><span lang=EN-US style='font-size:10.0pt;font-family:
798 Arial'><o:p></o:p></span></p>
799 </td>
800 <td bgcolor="#FDB5A6" style='padding:.75pt .75pt .75pt .75pt'><span class="MsoNormal"><tt><span lang=EN-US style='font-size:10.0pt'>Bad example if applicable</span></tt><span lang=EN-US style='font-size:10.0pt;font-family:
801 Arial'><o:p></o:p></span></span></td>
802 </tr>
803 <tr style='mso-yfti-irow:2;mso-yfti-lastrow:yes'>
804 <td colspan="2" style='padding:.75pt .75pt .75pt .75pt'>
805 <p class=MsoNormal><span lang=EN-US style='font-size:7.5pt;font-family:
806 Arial'>Motivation, background and additional information. <o:p></o:p></span></p>
807 </td>
808 </tr>
809 </table>
810 <p><span lang=EN-US>The motivation section is important. Coding standards and
811 guidelines tend to start &quot;religious wars&quot;, and it is important to
812 state the background for the recommendation. </span></p>
813 <h3><a name=Recommendation></a><span lang=EN-US>1.2 Recommendation Importance</span></h3>
814 <p><span lang=EN-US>In the guideline sections the terms <i>must</i>, <i>should
815 </i>and <i>can </i>have special meaning. A <i>must </i>requirement must be
816 followed, <span class=GramE>a <i>should</i></span><i> </i>is a strong
817 recommendation, and a <i>can </i>is a general guideline. </span></p>
818 <h2><a name="General_Recomendations"></a><span lang=EN-US>2 General
819 Recommendations<o:p></o:p></span></h2>
820 <!--
821 ****************************************************************************
822 Rule
823 ****************************************************************************
824 -->
825 <table class=TableNormal border=1 cellpadding=0 width="100%"
826 style='width:100.0%;mso-cellspacing:1.5pt;mso-padding-alt:0cm 5.4pt 0cm 5.4pt'>
827 <tr style='mso-yfti-irow:0'>
828 <td style='background:#BBCCEE;padding:.75pt .75pt .75pt .75pt'>
829 <p class=MsoNormal><b><span lang=EN-US style='font-size:10.0pt;font-family:
830 Arial'>1. Any violation to the guide is allowed if it enhances readability.
831 <o:p></o:p></span></b></p>
832 </td>
833 </tr>
834 <tr style='mso-yfti-irow:1'>
835 <td style='padding:.75pt .75pt .75pt .75pt'>
836 <p class=MsoNormal><span lang=EN-US style='font-size:10.0pt;font-family:
837 Arial'><o:p>&nbsp;</o:p></span></p>
838 </td>
839 </tr>
840 <tr style='mso-yfti-irow:2;mso-yfti-lastrow:yes'>
841 <td style='padding:.75pt .75pt .75pt .75pt'>
842 <p class=MsoNormal><span lang=EN-US style='font-size:7.5pt;font-family:
843 Arial'>The main goal of the recommendation is to improve readability and
844 thereby the understanding and the maintainability and general quality of
845 the code. It is impossible to cover all the specific cases in a general
846 guide and the programmer should be flexible. <o:p></o:p></span></p>
847 </td>
848 </tr>
849 </table>
850 <!--
851 ****************************************************************************
852 Rule
853 ****************************************************************************
854 -->
855 <p style='margin:0cm;margin-bottom:.0001pt'><span lang=EN-US
856 style='display:none;mso-hide:all'><o:p>&nbsp;</o:p></span></p>
857 <table class=TableNormal border=1 cellpadding=0 width="100%"
858 style='width:100.0%;mso-cellspacing:1.5pt;mso-padding-alt:0cm 5.4pt 0cm 5.4pt'>
859 <tr style='mso-yfti-irow:0'>
860 <td style='background:#BBCCEE;padding:.75pt .75pt .75pt .75pt'>
861 <p class=MsoNormal><b><span lang=EN-US style='font-size:10.0pt;font-family:
862 Arial'>2. The rules can be violated if there are strong personal objections
863 against them. <o:p></o:p></span></b></p>
864 </td>
865 </tr>
866 <tr style='mso-yfti-irow:1'>
867 <td style='padding:.75pt .75pt .75pt .75pt'>
868 <p class=MsoNormal><span lang=EN-US style='font-size:10.0pt;font-family:
869 Arial'><o:p>&nbsp;</o:p></span></p>
870 </td>
871 </tr>
872 <tr style='mso-yfti-irow:2;mso-yfti-lastrow:yes'>
873 <td style='padding:.75pt .75pt .75pt .75pt'>
874 <p class=MsoNormal><span lang=EN-US style='font-size:7.5pt;font-family:
875 Arial'>The attempt is to make a guideline, not to force a particular coding
876 style onto individuals. Experienced programmers normally want adopt a style
877 like this anyway, but having one, and at least requiring everyone to get
878 familiar with it, usually makes people start <em><span style='font-family:
879 Arial'>thinking</span></em> about programming style and evaluate their own
880 habits in this area. <o:p></o:p></span></p>
881 <p><span lang=EN-US>On the other hand, new and inexperienced programmers
882 normally use a style guide as a convenience of getting into the programming
883 jargon more easily. </span></p>
884 </td>
885 </tr>
886 </table>
887 <p style='margin-bottom:12.0pt'><span lang=EN-US><br style='mso-special-character:
888 line-break'>
889 <![if !supportLineBreakNewLine]><br style='mso-special-character:line-break'>
890 <![endif]></span></p>
891 <h2><a name="Naming_Conventions"></a><span lang=EN-US>3 Naming Conventions</span></h2>
892 <h3><a name=General></a><span lang=EN-US>3.1 General Naming Conventions<o:p></o:p></span></h3>
893 <!--
894 ****************************************************************************
895 Rule
896 ****************************************************************************
897 -->
898 <table class=TableNormal border=1 cellpadding=0 width="100%"
899 style='width:100.0%;mso-cellspacing:1.5pt;mso-padding-alt:0cm 5.4pt 0cm 5.4pt'>
900 <tr style='mso-yfti-irow:0'>
901 <td style='background:#BBCCEE;padding:.75pt .75pt .75pt .75pt'>
902 <p class=MsoNormal><b><span lang=EN-US style='font-size:10.0pt;font-family:
903 Arial'>3. Names representing types must be in mixed case starting with
904 upper case. <o:p></o:p></span></b></p>
905 </td>
906 </tr>
907 <tr style='mso-yfti-irow:1'>
908 <td style='padding:.75pt .75pt .75pt .75pt'>
909 <p class=MsoNormal><tt><span lang=EN-US style='font-size:10.0pt'>Line,
910 SavingsAccount </span></tt><span lang=EN-US style='font-size:10.0pt;
911 font-family:Arial'><o:p></o:p></span></p>
912 </td>
913 </tr>
914 <tr style='mso-yfti-irow:2;mso-yfti-lastrow:yes'>
915 <td style='padding:.75pt .75pt .75pt .75pt'>
916 <p class=MsoNormal><span lang=EN-US style='font-size:7.5pt;font-family:
917 Arial'>Common practice in the C++ development community. <o:p></o:p></span></p>
918 </td>
919 </tr>
920 </table>
921 <!--
922 ****************************************************************************
923 Rule
924 ****************************************************************************
925 -->
926 <p style='margin:0cm;margin-bottom:.0001pt'><span lang=EN-US
927 style='display:none;mso-hide:all'><o:p>&nbsp;</o:p></span></p>
928 <table class=TableNormal border=1 cellpadding=0 width="100%"
929 style='width:100.0%;mso-cellspacing:1.5pt;mso-padding-alt:0cm 5.4pt 0cm 5.4pt'>
930 <tr style='mso-yfti-irow:0'>
931 <td style='background:#BBCCEE;padding:.75pt .75pt .75pt .75pt'>
932 <p class=MsoNormal><b><span lang=EN-US style='font-size:10.0pt;font-family:
933 Arial'>4. Variable names must be in mixed case starting with lower case. <o:p></o:p></span></b></p>
934 </td>
935 </tr>
936 <tr style='mso-yfti-irow:1'>
937 <td style='padding:.75pt .75pt .75pt .75pt'>
938 <p class=MsoNormal><tt><span lang=EN-US style='font-size:10.0pt'>line,
939 savingsAccount </span></tt><span lang=EN-US style='font-size:10.0pt;
940 font-family:Arial'><o:p></o:p></span></p>
941 </td>
942 </tr>
943 <tr style='mso-yfti-irow:2;mso-yfti-lastrow:yes'>
944 <td style='padding:.75pt .75pt .75pt .75pt'>
945 <p class=MsoNormal><span lang=EN-US style='font-size:7.5pt;font-family:
946 Arial'>Common practice in the C++ development community. Makes variables
947 easy to distinguish from types, and effectively resolves potential naming
948 collision as in the declaration Line line; <o:p></o:p></span></p>
949 </td>
950 </tr>
951 </table>
952 <p style='margin:0cm;margin-bottom:.0001pt'><span lang=EN-US
953 style='display:none;mso-hide:all'><o:p>&nbsp;</o:p></span></p>
954 <table class=TableNormal border=1 cellpadding=0 width="100%"
955 style='width:100.0%;mso-cellspacing:1.5pt;mso-padding-alt:0cm 5.4pt 0cm 5.4pt'>
956 <tr style='mso-yfti-irow:0'>
957 <td style='background:#BBCCEE;padding:.75pt .75pt .75pt .75pt'>
958 <p class=MsoNormal><b><span lang=EN-US style='font-size:10.0pt;font-family:
959 Arial'><!--
960 ****************************************************************************
961 Rule
962 ****************************************************************************
963 -->5. Named constants (including enumeration values) must be all uppercase
964 using underscore to separate words. <o:p></o:p></span></b></p>
965 </td>
966 </tr>
967 <tr style='mso-yfti-irow:1'>
968 <td style='padding:.75pt .75pt .75pt .75pt'>
969 <p class=MsoNormal><tt><span lang=EN-US style='font-size:10.0pt'>MAX_ITERATIONS,
970 COLOR_RED, PI </span></tt><span lang=EN-US style='font-size:10.0pt;
971 font-family:Arial'><o:p></o:p></span></p>
972 </td>
973 </tr>
974 <tr style='mso-yfti-irow:2;mso-yfti-lastrow:yes'>
975 <td style='padding:.75pt .75pt .75pt .75pt'>
976 <p class=MsoNormal><span lang=EN-US style='font-size:7.5pt;font-family:
977 Arial'>Common practice in the C++ development community. In general, the
978 use of such constants should be minimized. In many cases implementing the
979 value as a method is a better choice: <o:p></o:p></span></p>
980 <p><tt><span lang=EN-US style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:
981 10.0pt'>int getMaxIterations() &nbsp; &nbsp; // NOT: MAX_ITERATIONS = 25 </span></tt><span
982 lang=EN-US style='font-family:fixed;mso-bidi-font-family:"Courier New"'><br>
983 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>{</span></tt><br>
984 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>&nbsp;
985 return 25;</span></tt><br>
986 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>} </span></tt></span></p>
987 <p><span lang=EN-US>This form is both easier to read, and it ensures a
988 unified interface towards class values. </span></p>
989 </td>
990 </tr>
991 </table>
992 <p style='margin:0cm;margin-bottom:.0001pt'><span lang=EN-US
993 style='display:none;mso-hide:all'><o:p>&nbsp;</o:p></span></p>
994 <table class=TableNormal border=1 cellpadding=0 width="100%"
995 style='width:100.0%;mso-cellspacing:1.5pt;mso-padding-alt:0cm 5.4pt 0cm 5.4pt'>
996 <tr style='mso-yfti-irow:0'>
997 <td style='background:#BBCCEE;padding:.75pt .75pt .75pt .75pt'>
998 <p class=MsoNormal><b><span lang=EN-US style='font-size:10.0pt;font-family:
999 Arial'><!--
1000 ****************************************************************************
1001 Rule
1002 ****************************************************************************
1003 -->6. Names representing methods or functions must be verbs and written in
1004 mixed case starting with lower case. <o:p></o:p></span></b></p>
1005 </td>
1006 </tr>
1007 <tr style='mso-yfti-irow:1'>
1008 <td style='padding:.75pt .75pt .75pt .75pt'>
1009 <p class=MsoNormal><tt><span lang=EN-US style='font-size:10.0pt'>getName(),
1010 computeTotalWidth() </span></tt><span lang=EN-US style='font-size:10.0pt;
1011 font-family:Arial'><o:p></o:p></span></p>
1012 </td>
1013 </tr>
1014 <tr style='mso-yfti-irow:2;mso-yfti-lastrow:yes'>
1015 <td style='padding:.75pt .75pt .75pt .75pt'>
1016 <p class=MsoNormal><span lang=EN-US style='font-size:7.5pt;font-family:
1017 Arial'>Common practice in the C++ development community. This is identical
1018 to variable names, but functions in C++ are already distingushable from
1019 variables by their specific form. <o:p></o:p></span></p>
1020 </td>
1021 </tr>
1022 </table>
1023 <p style='margin:0cm;margin-bottom:.0001pt'><span lang=EN-US
1024 style='display:none;mso-hide:all'><o:p>&nbsp;</o:p></span></p>
1025 <table class=TableNormal border=1 cellpadding=0 width="100%"
1026 style='width:100.0%;mso-cellspacing:1.5pt;mso-padding-alt:0cm 5.4pt 0cm 5.4pt'>
1027 <tr style='mso-yfti-irow:0'>
1028 <td style='background:#BBCCEE;padding:.75pt .75pt .75pt .75pt'>
1029 <p class=MsoNormal><b><span lang=EN-US style='font-size:10.0pt;font-family:
1030 Arial'><!--
1031 ****************************************************************************
1032 Rule
1033 ****************************************************************************
1034 -->7. Names representing namespaces should be all lowercase. <o:p></o:p></span></b></p>
1035 </td>
1036 </tr>
1037 <tr style='mso-yfti-irow:1'>
1038 <td style='padding:.75pt .75pt .75pt .75pt'>
1039 <p class=MsoNormal><tt><span lang=EN-US style='font-size:10.0pt'>analyzer,
1040 iomanager, mainwindow </span></tt><span lang=EN-US style='font-size:10.0pt;
1041 font-family:Arial'><o:p></o:p></span></p>
1042 </td>
1043 </tr>
1044 <tr style='mso-yfti-irow:2;mso-yfti-lastrow:yes'>
1045 <td style='padding:.75pt .75pt .75pt .75pt'>
1046 <p class=MsoNormal><span lang=EN-US style='font-size:7.5pt;font-family:
1047 Arial'>Common practice in the C++ development community. <o:p></o:p></span></p>
1048 </td>
1049 </tr>
1050 </table>
1051 <p style='margin:0cm;margin-bottom:.0001pt'><span lang=EN-US
1052 style='display:none;mso-hide:all'><o:p>&nbsp;</o:p></span></p>
1053 <table class=TableNormal border=1 cellpadding=0 width="100%"
1054 style='width:100.0%;mso-cellspacing:1.5pt;mso-padding-alt:0cm 5.4pt 0cm 5.4pt'>
1055 <tr style='mso-yfti-irow:0'>
1056 <td style='background:#BBCCEE;padding:.75pt .75pt .75pt .75pt'>
1057 <p class=MsoNormal><b><span lang=EN-US style='font-size:10.0pt;font-family:
1058 Arial'><!--
1059 ****************************************************************************
1060 Rule
1061 ****************************************************************************
1062 -->8. Names representing template types should be a single uppercase letter. <o:p></o:p></span></b></p>
1063 </td>
1064 </tr>
1065 <tr style='mso-yfti-irow:1'>
1066 <td style='padding:.75pt .75pt .75pt .75pt'>
1067 <p class=MsoNormal><tt><span lang=EN-US style='font-size:10.0pt'>template&lt;typename
1068 T&gt; ... </span></tt><span lang=EN-US style='font-size:10.0pt;font-family:
1069 fixed;mso-bidi-font-family:"Courier New"'><br>
1070 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>template&lt;typename
1071 C, typename D&gt; ... </span></tt></span><span lang=EN-US style='font-size:
1072 10.0pt;font-family:Arial'><o:p></o:p></span></p>
1073 </td>
1074 </tr>
1075 <tr style='mso-yfti-irow:2;mso-yfti-lastrow:yes'>
1076 <td style='padding:.75pt .75pt .75pt .75pt'>
1077 <p class=MsoNormal><span lang=EN-US style='font-size:7.5pt;font-family:
1078 Arial'>Common practice in the C++ development community. This makes
1079 template names stand out relative to all other names used. <o:p></o:p></span></p>
1080 </td>
1081 </tr>
1082 </table>
1083 <p style='margin:0cm;margin-bottom:.0001pt'><span lang=EN-US
1084 style='display:none;mso-hide:all'><o:p>&nbsp;</o:p></span></p>
1085 <table class=TableNormal border=1 cellpadding=0 width="100%"
1086 style='width:100.0%;mso-cellspacing:1.5pt;mso-padding-alt:0cm 5.4pt 0cm 5.4pt'>
1087 <tr style='mso-yfti-irow:0'>
1088 <td colspan="2" style='background:#BBCCEE;padding:.75pt .75pt .75pt .75pt'>
1089 <p class=MsoNormal><b><span lang=EN-US style='font-size:10.0pt;font-family:
1090 Arial'><!--
1091 ****************************************************************************
1092 Rule
1093 ****************************************************************************
1094 -->9. Abbreviations and acronyms must not be uppercase when used as name [4]. <o:p></o:p></span></b></p>
1095 </td>
1096 </tr>
1097 <tr style='mso-yfti-irow:1'>
1098 <td style='padding:.75pt .75pt .75pt .75pt'>
1099 <p class=MsoNormal><tt><span lang=EN-US style='font-size:10.0pt'>exportHtmlSource();</span></tt><span lang=EN-US
1100 style='font-size:10.0pt;font-family:fixed;mso-bidi-font-family:"Courier New"'><br>
1101 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>openDvdPlayer();</span></tt></span><span
1102 lang=EN-US style='font-size:10.0pt;font-family:Arial'><o:p></o:p></span></p>
1103 </td>
1104 <td bgcolor="#FDB5A6" style='padding:.75pt .75pt .75pt .75pt'><span class="MsoNormal"><tt><span lang=EN-US style='font-size:10.0pt'> exportHTMLSource();</span></tt><span lang=EN-US
1105 style='font-size:10.0pt;font-family:fixed;mso-bidi-font-family:"Courier New"'><br>
1106 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>openDVDPlayer(); </span></tt></span><span
1107 lang=EN-US style='font-size:10.0pt;font-family:Arial'><o:p></o:p></span></span></td>
1108 </tr>
1109 <tr style='mso-yfti-irow:2;mso-yfti-lastrow:yes'>
1110 <td colspan="2" style='padding:.75pt .75pt .75pt .75pt'>
1111 <p class=MsoNormal><span lang=EN-US style='font-size:7.5pt;font-family:
1112 Arial'>Using all uppercase for the base name will give conflicts with the
1113 naming conventions given above. A variable of this type whould have to be
1114 named dVD, hTML etc. which obviously is not very readable. Another problem
1115 is illustrated in the examples above; When the name is connected to
1116 another, the readbility is seriously reduced; the word following the
1117 abbreviation does not stand out as it should. <o:p></o:p></span></p>
1118 </td>
1119 </tr>
1120 </table>
1121 <p style='margin:0cm;margin-bottom:.0001pt'><span lang=EN-US
1122 style='display:none;mso-hide:all'><o:p>&nbsp;</o:p></span></p>
1123 <table class=TableNormal border=1 cellpadding=0 width="100%"
1124 style='width:100.0%;mso-cellspacing:1.5pt;mso-padding-alt:0cm 5.4pt 0cm 5.4pt'>
1125 <tr style='mso-yfti-irow:0'>
1126 <td style='background:#BBCCEE;padding:.75pt .75pt .75pt .75pt'>
1127 <p class=MsoNormal><b><span lang=EN-US style='font-size:10.0pt;font-family:
1128 Arial'><!--
1129 ****************************************************************************
1130 Rule
1131 ****************************************************************************
1132 -->10. Global variables should always be referred to using <span class=GramE>the
1133 :</span>: operator. <o:p></o:p></span></b></p>
1134 </td>
1135 </tr>
1136 <tr style='mso-yfti-irow:1'>
1137 <td style='padding:.75pt .75pt .75pt .75pt'>
1138 <p class=MsoNormal><tt><span lang=EN-US style='font-size:10.0pt'>::mainWindow.open(),
1139 ::applicationContext.getName() </span></tt><span lang=EN-US
1140 style='font-size:10.0pt;font-family:Arial'><o:p></o:p></span></p>
1141 </td>
1142 </tr>
1143 <tr style='mso-yfti-irow:2;mso-yfti-lastrow:yes'>
1144 <td style='padding:.75pt .75pt .75pt .75pt'>
1145 <p class=MsoNormal><span lang=EN-US style='font-size:7.5pt;font-family:
1146 Arial'>In general, the use of global variables should be avoided. Consider
1147 using singleton objects instead. <o:p></o:p></span></p>
1148 </td>
1149 </tr>
1150 </table>
1151 <p style='margin:0cm;margin-bottom:.0001pt'><span lang=EN-US
1152 style='display:none;mso-hide:all'><o:p>&nbsp;</o:p></span></p>
1153 <table class=TableNormal border=1 cellpadding=0 width="100%"
1154 style='width:100.0%;mso-cellspacing:1.5pt;mso-padding-alt:0cm 5.4pt 0cm 5.4pt'>
1155 <tr style='mso-yfti-irow:0'>
1156 <td style='background:#BBCCEE;padding:.75pt .75pt .75pt .75pt'>
1157 <p class=MsoNormal><b><span lang=EN-US style='font-size:10.0pt;font-family:
1158 Arial'><!--
1159 ***************************************************************************
1160 Rule
1161 ****************************************************************************
1162 -->11. Private class variables should have underscore suffix. <o:p></o:p></span></b></p>
1163 </td>
1164 </tr>
1165 <tr style='mso-yfti-irow:1'>
1166 <td style='padding:.75pt .75pt .75pt .75pt'>
1167 <p class=MsoNormal><tt><span lang=EN-US style='font-size:10.0pt'>class
1168 SomeClass {</span></tt><span lang=EN-US style='font-size:10.0pt;font-family:
1169 fixed;mso-bidi-font-family:"Courier New"'><br>
1170 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>&nbsp;
1171 private:</span></tt><br>
1172 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>&nbsp;&nbsp;&nbsp;
1173 int&nbsp; length_;</span></tt><br>
1174 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>} </span></tt></span><span
1175 lang=EN-US style='font-size:10.0pt;font-family:Arial'><o:p></o:p></span></p>
1176 </td>
1177 </tr>
1178 <tr style='mso-yfti-irow:2;mso-yfti-lastrow:yes'>
1179 <td style='padding:.75pt .75pt .75pt .75pt'>
1180 <p class=MsoNormal><span lang=EN-US style='font-size:7.5pt;font-family:
1181 Arial'>Apart from its name and its type, the <em><span style='font-family:
1182 Arial'>scope</span></em> of a variable is its most important feature.
1183 Indicating class scope by using underscore makes it easy to distinguish
1184 class variables from local scratch variables. This is important because
1185 class variables are considered to have higher significance than method
1186 variables, and should be treated with special care by the programmer. <o:p></o:p></span></p>
1187 <p><span lang=EN-US>A side effect of the underscore naming convention is
1188 that it nicely resolves the problem of finding reasonable variable names
1189 for setter methods and constructors: </span></p>
1190 <p><tt><span lang=EN-US style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:
1191 10.0pt'>void setDepth (int depth)</span></tt><span lang=EN-US
1192 style='font-family:fixed;mso-bidi-font-family:"Courier New"'><br>
1193 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>{</span></tt><br>
1194 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>&nbsp;
1195 depth_ = depth;</span></tt><br>
1196 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>} </span></tt></span></p>
1197 <p><span lang=EN-US>An issue is whether the underscore should be added as a
1198 prefix or as a suffix. Both practices are commonly used, but the latter is
1199 recommended because it <span class=GramE>seem</span> to best preserve the
1200 readability of the name. </span></p>
1201 <p><span lang=EN-US>It should be noted that scope identification in
1202 variables has been a controversial issue for quite some time. It seems,
1203 though, that this practice now is gaining acceptance and that it is
1204 becoming more and more common as a convention in the professional
1205 development community. </span></p>
1206 </td>
1207 </tr>
1208 </table>
1209 <p style='margin:0cm;margin-bottom:.0001pt'><span lang=EN-US
1210 style='display:none;mso-hide:all'><o:p>&nbsp;</o:p></span></p>
1211 <table class=TableNormal border=1 cellpadding=0 width="100%"
1212 style='width:100.0%;mso-cellspacing:1.5pt;mso-padding-alt:0cm 5.4pt 0cm 5.4pt'>
1213 <tr style='mso-yfti-irow:0'>
1214 <td colspan="2" style='background:#BBCCEE;padding:.75pt .75pt .75pt .75pt'>
1215 <p class=MsoNormal><b><span lang=EN-US style='font-size:10.0pt;font-family:
1216 Arial'><!--
1217 ****************************************************************************
1218 Rule
1219 ****************************************************************************
1220 -->12. Generic variables should have the same name as their type. <o:p></o:p></span></b></p>
1221 </td>
1222 </tr>
1223 <tr style='mso-yfti-irow:1'>
1224 <td width="50%" style='padding:.75pt .75pt .75pt .75pt'>
1225 <p class=MsoNormal><tt><span lang=EN-US style='font-size:10.0pt'>void
1226 setTopic (Topic *topic)</span></tt><span lang=EN-US style='font-size:10.0pt;font-family:
1227 fixed;mso-bidi-font-family:"Courier New"'><br>
1228 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>&nbsp;
1229 &nbsp;</span></tt><br>
1230 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>&nbsp;</span></tt><br>
1231 <br>
1232 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>void
1233 connect (Database *database)</span></tt><br>
1234 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>&nbsp;
1235 &nbsp;</span></tt></span><span lang=EN-US style='font-size:10.0pt;
1236 font-family:Arial'><o:p></o:p></span></p>
1237 </td>
1238 <td width="50%" bgcolor="#FDB5A6" style='padding:.75pt .75pt .75pt .75pt'><span class="MsoNormal"><tt><span lang=EN-US style='font-size:10.0pt'>void setTopic (Topic *value)</span></tt><span lang=EN-US style='font-size:10.0pt;font-family:
1239 fixed;mso-bidi-font-family:"Courier New"'><br>
1240 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>void setTopic (Topic *aTopic) </span></tt><br>
1241 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>void setTopic (Topic *x) </span></tt><br>
1242 <br>
1243 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>void connect (Database *db)</span></tt><br>
1244 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'> void connect (Database *oracleDB) </span></tt></span><span lang=EN-US style='font-size:10.0pt;
1245 font-family:Arial'><o:p></o:p></span></span></td>
1246 </tr>
1247 <tr style='mso-yfti-irow:2;mso-yfti-lastrow:yes'>
1248 <td colspan="2" style='padding:.75pt .75pt .75pt .75pt'>
1249 <p class=MsoNormal><span lang=EN-US style='font-size:7.5pt;font-family:
1250 Arial'>Reduce complexity by reducing the number of terms and names used.
1251 Also makes it easy to deduce the type given a variable name only. <o:p></o:p></span></p>
1252 <p><span lang=EN-US>If for some reason this convention doesn't seem to <em><span
1253 style='font-family:Arial'>fit</span></em> it is a strong indication that
1254 the type name is badly chosen. </span></p>
1255 <p><span lang=EN-US>Non-generic variables have a <em><span
1256 style='font-family:Arial'>role</span></em>. These variables can often be
1257 named by combining role and type: </span></p>
1258 <p><tt><span lang=EN-US style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:
1259 10.0pt'>Point startingPoint, centerPoint;</span></tt><span lang=EN-US
1260 style='font-family:fixed;mso-bidi-font-family:"Courier New"'><br>
1261 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>Name&nbsp;
1262 loginName;</span></tt></span></p>
1263 </td>
1264 </tr>
1265 </table>
1266 <p style='margin:0cm;margin-bottom:.0001pt'><!--
1267 ****************************************************************************
1268 Rule
1269 ****************************************************************************
1270 --><span lang=EN-US style='display:none;mso-hide:all'><o:p>&nbsp;</o:p></span></p>
1271 <p style='margin:0cm;margin-bottom:.0001pt'><span lang=EN-US
1272 style='display:none;mso-hide:all'><o:p>&nbsp;</o:p></span></p>
1273 <table class=TableNormal border=1 cellpadding=0 width="100%"
1274 style='width:100.0%;mso-cellspacing:1.5pt;mso-padding-alt:0cm 5.4pt 0cm 5.4pt'>
1275 <tr style='mso-yfti-irow:0'>
1276 <td style='background:#BBCCEE;padding:.75pt .75pt .75pt .75pt'>
1277 <p class=MsoNormal><b><span lang=EN-US style='font-size:10.0pt;font-family:
1278 Arial'><!--
1279 ****************************************************************************
1280 Rule
1281 ****************************************************************************
1282 -->
1283 13. Variables with a large scope should have long names, variables with a
1284 small scope can have short names [1]. <o:p></o:p></span></b></p>
1285 </td>
1286 </tr>
1287 <tr style='mso-yfti-irow:1'>
1288 <td style='padding:.75pt .75pt .75pt .75pt'>
1289 <p class=MsoNormal><span lang=EN-US style='font-size:10.0pt;font-family:
1290 Arial'><o:p>&nbsp;</o:p></span></p>
1291 </td>
1292 </tr>
1293 <tr style='mso-yfti-irow:2;mso-yfti-lastrow:yes'>
1294 <td style='padding:.75pt .75pt .75pt .75pt'>
1295 <p class=MsoNormal><span lang=EN-US style='font-size:7.5pt;font-family:
1296 Arial'>Scratch variables used for temporary storage or indices are best
1297 kept short. A programmer reading such variables should be able to assume
1298 that its value is not used outside a few lines of code. Common scratch
1299 variables for integers are <em><span style='font-family:Arial'>i</span></em>,
1300 <em><span style='font-family:Arial'>j</span></em>, <em><span
1301 style='font-family:Arial'>k</span></em>, <em><span style='font-family:Arial'>m</span></em>,
1302 <em><span style='font-family:Arial'>n</span></em> and for characters <em><span
1303 style='font-family:Arial'>c</span></em> and <em><span style='font-family:
1304 Arial'>d</span></em>. <o:p></o:p></span></p>
1305 </td>
1306 </tr>
1307 </table>
1308 <p style='margin:0cm;margin-bottom:.0001pt'><span lang=EN-US
1309 style='display:none;mso-hide:all'><o:p>&nbsp;</o:p></span></p>
1310 <table class=TableNormal border=1 cellpadding=0 width="100%"
1311 style='width:100.0%;mso-cellspacing:1.5pt;mso-padding-alt:0cm 5.4pt 0cm 5.4pt'>
1312 <tr style='mso-yfti-irow:0'>
1313 <td style='background:#BBCCEE;padding:.75pt .75pt .75pt .75pt'>
1314 <p class=MsoNormal><b><span lang=EN-US style='font-size:10.0pt;font-family:
1315 Arial'><!--
1316 ****************************************************************************
1317 Rule
1318 ****************************************************************************
1319 -->
1320 14. The name of the object is implicit, and should be avoided in a method
1321 name. <o:p></o:p></span></b></p>
1322 </td>
1323 </tr>
1324 <tr style='mso-yfti-irow:1'>
1325 <td style='padding:.75pt .75pt .75pt .75pt'>
1326 <p class=MsoNormal><tt><span lang=EN-US style='font-size:10.0pt'>line.getLength();&nbsp;&nbsp;&nbsp;
1327 // NOT:&nbsp; line.getLineLength(); </span></tt><span lang=EN-US
1328 style='font-size:10.0pt;font-family:Arial'><o:p></o:p></span></p>
1329 </td>
1330 </tr>
1331 <tr style='mso-yfti-irow:2;mso-yfti-lastrow:yes'>
1332 <td style='padding:.75pt .75pt .75pt .75pt'>
1333 <p class=MsoNormal><span lang=EN-US style='font-size:7.5pt;font-family:
1334 Arial'>The latter seems natural in the class declaration, but proves
1335 superfluous in use, as shown in the example. <o:p></o:p></span></p>
1336 </td>
1337 </tr>
1338 </table>
1339 <h3><a name=Specific></a><span lang=EN-US>3.2 Specific Naming Conventions<o:p></o:p></span></h3>
1340 <!--
1341 ****************************************************************************
1342 Rule
1343 ****************************************************************************
1344 -->
1345 <table class=TableNormal border=1 cellpadding=0 width="100%"
1346 style='width:100.0%;mso-cellspacing:1.5pt;mso-padding-alt:0cm 5.4pt 0cm 5.4pt'>
1347 <tr style='mso-yfti-irow:0'>
1348 <td style='background:#BBCCEE;padding:.75pt .75pt .75pt .75pt'>
1349 <p class=MsoNormal><b><span lang=EN-US style='font-size:10.0pt;font-family:
1350 Arial'>15. The terms <i>get/set</i> must be used where an attribute is
1351 accessed directly. <o:p></o:p></span></b></p>
1352 </td>
1353 </tr>
1354 <tr style='mso-yfti-irow:1'>
1355 <td style='padding:.75pt .75pt .75pt .75pt'>
1356 <p class=MsoNormal><tt><span lang=EN-US style='font-size:10.0pt'>employee.getName();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
1357 matrix.getElement (2, 4);</span></tt><span lang=EN-US style='font-size:
1358 10.0pt;font-family:fixed;mso-bidi-font-family:"Courier New"'><br>
1359 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>employee.setName
1360 (name);&nbsp; matrix.setElement (2, 4, value); </span></tt></span><span
1361 lang=EN-US style='font-size:10.0pt;font-family:Arial'><o:p></o:p></span></p>
1362 </td>
1363 </tr>
1364 <tr style='mso-yfti-irow:2;mso-yfti-lastrow:yes'>
1365 <td style='padding:.75pt .75pt .75pt .75pt'>
1366 <p class=MsoNormal><span lang=EN-US style='font-size:7.5pt;font-family:
1367 Arial'>Common practice in the C++ development community. In Java this
1368 convention has become more or less standard. <o:p></o:p></span></p>
1369 </td>
1370 </tr>
1371 </table>
1372 <p style='margin:0cm;margin-bottom:.0001pt'><span lang=EN-US
1373 style='display:none;mso-hide:all'><o:p>&nbsp;</o:p></span></p>
1374 <table class=TableNormal border=1 cellpadding=0 width="100%"
1375 style='width:100.0%;mso-cellspacing:1.5pt;mso-padding-alt:0cm 5.4pt 0cm 5.4pt'>
1376 <tr style='mso-yfti-irow:0'>
1377 <td style='background:#BBCCEE;padding:.75pt .75pt .75pt .75pt'>
1378 <p class=MsoNormal><b><span lang=EN-US style='font-size:10.0pt;font-family:
1379 Arial'><!--
1380 ****************************************************************************
1381 Rule
1382 ****************************************************************************
1383 -->16. The term <i>compute</i> can be used in methods where something is
1384 computed. <o:p></o:p></span></b></p>
1385 </td>
1386 </tr>
1387 <tr style='mso-yfti-irow:1'>
1388 <td style='padding:.75pt .75pt .75pt .75pt'>
1389 <p class=MsoNormal><tt><span lang=EN-US style='font-size:10.0pt'>valueSet-&gt;computeAverage();&nbsp;
1390 matrix-&gt;computeInverse() </span></tt><span lang=EN-US style='font-size:
1391 10.0pt;font-family:Arial'><o:p></o:p></span></p>
1392 </td>
1393 </tr>
1394 <tr style='mso-yfti-irow:2;mso-yfti-lastrow:yes'>
1395 <td style='padding:.75pt .75pt .75pt .75pt'>
1396 <p class=MsoNormal><span lang=EN-US style='font-size:7.5pt;font-family:
1397 Arial'>Give the reader the immediate clue that this is a potential time
1398 consuming operation, and if used repeatedly, he might consider caching the
1399 result. Consistent use of the term enhances readability. <o:p></o:p></span></p>
1400 </td>
1401 </tr>
1402 </table>
1403 <p style='margin:0cm;margin-bottom:.0001pt'><span lang=EN-US
1404 style='display:none;mso-hide:all'><o:p>&nbsp;</o:p></span></p>
1405 <table class=TableNormal border=1 cellpadding=0 width="100%"
1406 style='width:100.0%;mso-cellspacing:1.5pt;mso-padding-alt:0cm 5.4pt 0cm 5.4pt'>
1407 <tr style='mso-yfti-irow:0'>
1408 <td style='background:#BBCCEE;padding:.75pt .75pt .75pt .75pt'>
1409 <p class=MsoNormal><b><span lang=EN-US style='font-size:10.0pt;font-family:
1410 Arial'><!--
1411 ****************************************************************************
1412 Rule
1413 ****************************************************************************
1414 -->17. The term <i>find</i> can be used in methods where something is looked
1415 up. <o:p></o:p></span></b></p>
1416 </td>
1417 </tr>
1418 <tr style='mso-yfti-irow:1'>
1419 <td style='padding:.75pt .75pt .75pt .75pt'>
1420 <p class=MsoNormal><tt><span lang=EN-US style='font-size:10.0pt'>vertex.findNearestVertex();&nbsp;&nbsp;
1421 matrix.findMinElement();&nbsp; </span></tt><span lang=EN-US
1422 style='font-size:10.0pt;font-family:Arial'><o:p></o:p></span></p>
1423 </td>
1424 </tr>
1425 <tr style='mso-yfti-irow:2;mso-yfti-lastrow:yes'>
1426 <td style='padding:.75pt .75pt .75pt .75pt'>
1427 <p class=MsoNormal><span lang=EN-US style='font-size:7.5pt;font-family:
1428 Arial'>Give the reader the immediate clue that this is a simple look up
1429 method with a minimum of computations involved. Consistent use of the term
1430 enhances readability. <o:p></o:p></span></p>
1431 </td>
1432 </tr>
1433 </table>
1434 <p style='margin:0cm;margin-bottom:.0001pt'><span lang=EN-US
1435 style='display:none;mso-hide:all'><o:p>&nbsp;</o:p></span></p>
1436 <table class=TableNormal border=1 cellpadding=0 width="100%"
1437 style='width:100.0%;mso-cellspacing:1.5pt;mso-padding-alt:0cm 5.4pt 0cm 5.4pt'>
1438 <tr style='mso-yfti-irow:0'>
1439 <td style='background:#BBCCEE;padding:.75pt .75pt .75pt .75pt'>
1440 <p class=MsoNormal><b><span lang=EN-US style='font-size:10.0pt;font-family:
1441 Arial'><!--
1442 ****************************************************************************
1443 Rule
1444 ****************************************************************************
1445 -->18. The term <i>initialize</i> can be used where an object or a concept is
1446 established. <o:p></o:p></span></b></p>
1447 </td>
1448 </tr>
1449 <tr style='mso-yfti-irow:1'>
1450 <td style='padding:.75pt .75pt .75pt .75pt'>
1451 <p class=MsoNormal><tt><span lang=EN-US style='font-size:10.0pt'>printer.initializeFontSet();
1452 </span></tt><span lang=EN-US style='font-size:10.0pt;font-family:Arial'><o:p></o:p></span></p>
1453 </td>
1454 </tr>
1455 <tr style='mso-yfti-irow:2;mso-yfti-lastrow:yes'>
1456 <td style='padding:.75pt .75pt .75pt .75pt'>
1457 <p class=MsoNormal><span lang=EN-US style='font-size:7.5pt;font-family:
1458 Arial'>The american <i>initialize </i>should be preferred over the english <i>initialise</i>.
1459 Abbreviation <i>init </i>should be avoided.<o:p></o:p></span></p>
1460 </td>
1461 </tr>
1462 </table>
1463 <p style='margin:0cm;margin-bottom:.0001pt'><span lang=EN-US
1464 style='display:none;mso-hide:all'><o:p>&nbsp;</o:p></span></p>
1465 <table class=TableNormal border=1 cellpadding=0 width="100%"
1466 style='width:100.0%;mso-cellspacing:1.5pt;mso-padding-alt:0cm 5.4pt 0cm 5.4pt'>
1467 <tr style='mso-yfti-irow:0'>
1468 <td style='background:#BBCCEE;padding:.75pt .75pt .75pt .75pt'>
1469 <p class=MsoNormal><b><span lang=EN-US style='font-size:10.0pt;font-family:
1470 Arial'><!--
1471 ****************************************************************************
1472 Rule
1473 ****************************************************************************
1474 -->19. Variables representing GUI components should be suffixed by the
1475 component type name. <o:p></o:p></span></b></p>
1476 </td>
1477 </tr>
1478 <tr style='mso-yfti-irow:1'>
1479 <td style='padding:.75pt .75pt .75pt .75pt'>
1480 <p class=MsoNormal><tt><span lang=EN-US style='font-size:10.0pt'>mainWindow,
1481 propertiesDialog, widthScale, loginText, leftScrollbar, mainForm, fileMenu,
1482 minLabel, exitButton, yesToggle etc. </span></tt><span lang=EN-US
1483 style='font-size:10.0pt;font-family:Arial'><o:p></o:p></span></p>
1484 </td>
1485 </tr>
1486 <tr style='mso-yfti-irow:2;mso-yfti-lastrow:yes'>
1487 <td style='padding:.75pt .75pt .75pt .75pt'>
1488 <p class=MsoNormal><span lang=EN-US style='font-size:7.5pt;font-family:
1489 Arial'>Enhances readability since the name gives the user an immediate clue
1490 of the type of the variable and thereby the objects resources. <o:p></o:p></span></p>
1491 </td>
1492 </tr>
1493 </table>
1494 <p style='margin:0cm;margin-bottom:.0001pt'><span lang=EN-US
1495 style='display:none;mso-hide:all'><o:p>&nbsp;</o:p></span></p>
1496 <table class=TableNormal border=1 cellpadding=0 width="100%"
1497 style='width:100.0%;mso-cellspacing:1.5pt;mso-padding-alt:0cm 5.4pt 0cm 5.4pt'>
1498 <tr style='mso-yfti-irow:0'>
1499 <td style='background:#BBCCEE;padding:.75pt .75pt .75pt .75pt'>
1500 <p class=MsoNormal><b><span lang=EN-US style='font-size:10.0pt;font-family:
1501 Arial'><!--
1502 ****************************************************************************
1503 Rule
1504 ****************************************************************************
1505 -->20. The suffix <i>List</i> can be used on names representing a list of
1506 objects. <o:p></o:p></span></b></p>
1507 </td>
1508 </tr>
1509 <tr style='mso-yfti-irow:1'>
1510 <td style='padding:.75pt .75pt .75pt .75pt'>
1511 <p class=MsoNormal><tt><span lang=EN-US style='font-size:10.0pt'>vertex </span></tt><span
1512 lang=EN-US style='font-size:10.0pt;font-family:Arial'>(one
1513 vertex),&nbsp;&nbsp; </span><tt><span lang=EN-US style='font-size:10.0pt'>vertexList
1514 </span></tt><span lang=EN-US style='font-size:10.0pt;font-family:Arial'>(a
1515 list of vertices) <o:p></o:p></span></p>
1516 </td>
1517 </tr>
1518 <tr style='mso-yfti-irow:2;mso-yfti-lastrow:yes'>
1519 <td style='padding:.75pt .75pt .75pt .75pt'>
1520 <p class=MsoNormal><span lang=EN-US style='font-size:7.5pt;font-family:
1521 Arial'>Enhances readability since the name gives the user an immediate clue
1522 of the type of the variable and the operations that can be performed on the
1523 object. <o:p></o:p></span></p>
1524 <p><span lang=EN-US>Simply using the plural form of the base class name for
1525 a list (</span><tt><span lang=EN-US style='mso-ansi-font-size:10.0pt;
1526 mso-bidi-font-size:10.0pt'>matrixElement </span></tt><span lang=EN-US>(one
1527 matrix element), </span><tt><span lang=EN-US style='mso-ansi-font-size:
1528 10.0pt;mso-bidi-font-size:10.0pt'>matrixElements </span></tt><span
1529 lang=EN-US>(list of matrix elements)) shoul be avoided since the two only
1530 differ in a single character and are thereby difficult to distinguish. </span></p>
1531 <p><span lang=EN-US>A <i>list</i> in this context is the compound data type
1532 that can be traversed backwards, forwards, etc. (typically an STL </span><tt><span
1533 lang=EN-US style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>vector</span></tt><span
1534 lang=EN-US>). A plain array is simpler. The suffix <i>Array</i> can be used
1535 to denote an array of objects. </span></p>
1536 </td>
1537 </tr>
1538 </table>
1539 <p style='margin:0cm;margin-bottom:.0001pt'><span lang=EN-US
1540 style='display:none;mso-hide:all'><o:p>&nbsp;</o:p></span></p>
1541 <table class=TableNormal border=1 cellpadding=0 width="100%"
1542 style='width:100.0%;mso-cellspacing:1.5pt;mso-padding-alt:0cm 5.4pt 0cm 5.4pt'>
1543 <tr style='mso-yfti-irow:0'>
1544 <td style='background:#BBCCEE;padding:.75pt .75pt .75pt .75pt'>
1545 <p class=MsoNormal><b><span lang=EN-US style='font-size:10.0pt;font-family:
1546 Arial'><!--
1547 ****************************************************************************
1548 Rule
1549 ****************************************************************************
1550 -->21. The prefix <i>n</i> should be used for variables representing a number
1551 of objects. <o:p></o:p></span></b></p>
1552 </td>
1553 </tr>
1554 <tr style='mso-yfti-irow:1'>
1555 <td style='padding:.75pt .75pt .75pt .75pt'>
1556 <p class=MsoNormal><tt><span lang=EN-US style='font-size:10.0pt'>nPoints,
1557 nLines </span></tt><span lang=EN-US style='font-size:10.0pt;font-family:
1558 Arial'><o:p></o:p></span></p>
1559 </td>
1560 </tr>
1561 <tr style='mso-yfti-irow:2;mso-yfti-lastrow:yes'>
1562 <td style='padding:.75pt .75pt .75pt .75pt'>
1563 <p class=MsoNormal><span lang=EN-US style='font-size:7.5pt;font-family:
1564 Arial'>The notation is taken from mathematics where it is an established
1565 convention for indicating a number of objects. <o:p></o:p></span></p>
1566 </td>
1567 </tr>
1568 </table>
1569 <p style='margin:0cm;margin-bottom:.0001pt'><span lang=EN-US
1570 style='display:none;mso-hide:all'><o:p>&nbsp;</o:p></span></p>
1571 <table class=TableNormal border=1 cellpadding=0 width="100%"
1572 style='width:100.0%;mso-cellspacing:1.5pt;mso-padding-alt:0cm 5.4pt 0cm 5.4pt'>
1573 <tr style='mso-yfti-irow:0'>
1574 <td style='background:#BBCCEE;padding:.75pt .75pt .75pt .75pt'>
1575 <p class=MsoNormal><b><span lang=EN-US style='font-size:10.0pt;font-family:
1576 Arial'><!--
1577 ****************************************************************************
1578 Rule
1579 ****************************************************************************
1580 --><span class=GramE>22.The</span> suffix <i>No</i> should be used for
1581 variables representing an entity number. <o:p></o:p></span></b></p>
1582 </td>
1583 </tr>
1584 <tr style='mso-yfti-irow:1'>
1585 <td style='padding:.75pt .75pt .75pt .75pt'>
1586 <p class=MsoNormal><tt><span lang=EN-US style='font-size:10.0pt'>tableNo,
1587 employeeNo </span></tt><span lang=EN-US style='font-size:10.0pt;font-family:
1588 Arial'><o:p></o:p></span></p>
1589 </td>
1590 </tr>
1591 <tr style='mso-yfti-irow:2;mso-yfti-lastrow:yes'>
1592 <td style='padding:.75pt .75pt .75pt .75pt'>
1593 <p class=MsoNormal><span lang=EN-US style='font-size:7.5pt;font-family:
1594 Arial'>The notation is taken from mathematics where it is an established
1595 convention for indicating an entity number. <o:p></o:p></span></p>
1596 <p><span lang=EN-US>An elegant alternative is to prefix such variables with
1597 <span class=GramE>an <em><span style='font-family:Arial'>i</span></em></span>:
1598 </span><tt><span lang=EN-US style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:
1599 10.0pt'>iTable, iEmployee</span></tt><span lang=EN-US>. This effectively
1600 makes them <em><span style='font-family:Arial'>named</span></em> iterators.
1601 </span></p>
1602 </td>
1603 </tr>
1604 </table>
1605 <p style='margin:0cm;margin-bottom:.0001pt'><span lang=EN-US
1606 style='display:none;mso-hide:all'><o:p>&nbsp;</o:p></span></p>
1607 <table class=TableNormal border=1 cellpadding=0 width="100%"
1608 style='width:100.0%;mso-cellspacing:1.5pt;mso-padding-alt:0cm 5.4pt 0cm 5.4pt'>
1609 <tr style='mso-yfti-irow:0'>
1610 <td style='background:#BBCCEE;padding:.75pt .75pt .75pt .75pt'>
1611 <p class=MsoNormal><b><span lang=EN-US style='font-size:10.0pt;font-family:
1612 Arial'><!--
1613 ****************************************************************************
1614 Rule
1615 ****************************************************************************
1616 -->23. Iterator variables should be called <em><span style='font-family:Arial'>i</span></em>,
1617 <em><span style='font-family:Arial'>j</span></em>, <em><span
1618 style='font-family:Arial'>k</span></em> etc. <o:p></o:p></span></b></p>
1619 </td>
1620 </tr>
1621 <tr style='mso-yfti-irow:1'>
1622 <td style='padding:.75pt .75pt .75pt .75pt'>
1623 <p class=MsoNormal><tt><span lang=EN-US style='font-size:10.0pt'>for (int i
1624 = 0; i &lt; nTables); i++) {</span></tt><span lang=EN-US style='font-size:
1625 10.0pt;font-family:fixed;mso-bidi-font-family:"Courier New"'><br>
1626 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>&nbsp;
1627 :</span></tt><br>
1628 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>}</span></tt><br>
1629 <br>
1630 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>vector&lt;MyClass&gt;::iterator
1631 i;</span></tt><br>
1632 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>for
1633 (i = list.begin(); i != list.end(); i++) { </span></tt><br>
1634 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>&nbsp;
1635 Element element = *i;</span></tt><br>
1636 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>&nbsp;
1637 ... </span></tt><br>
1638 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>} </span></tt></span><span
1639 lang=EN-US style='font-size:10.0pt;font-family:Arial'><o:p></o:p></span></p>
1640 </td>
1641 </tr>
1642 <tr style='mso-yfti-irow:2;mso-yfti-lastrow:yes'>
1643 <td style='padding:.75pt .75pt .75pt .75pt'>
1644 <p class=MsoNormal><span lang=EN-US style='font-size:7.5pt;font-family:
1645 Arial'>The notation is taken from mathematics where it is an established
1646 convention for indicating iterators. <o:p></o:p></span></p>
1647 </td>
1648 </tr>
1649 </table>
1650 <p style='margin:0cm;margin-bottom:.0001pt'><!--
1651 ****************************************************************************
1652 Rule
1653 ****************************************************************************
1654 --><span lang=EN-US style='display:none;mso-hide:all'><o:p>&nbsp;</o:p></span></p>
1655 <table class=TableNormal border=1 cellpadding=0 width="100%"
1656 style='width:100.0%;mso-cellspacing:1.5pt;mso-padding-alt:0cm 5.4pt 0cm 5.4pt'>
1657 <tr style='mso-yfti-irow:0'>
1658 <td style='background:#BBCCEE;padding:.75pt .75pt .75pt .75pt'>
1659 <p class=MsoNormal><b><span lang=EN-US style='font-size:10.0pt;font-family:
1660 Arial'>24. The prefix <i>is</i> should be used for boolean variables and
1661 methods. <o:p></o:p></span></b></p>
1662 </td>
1663 </tr>
1664 <tr style='mso-yfti-irow:1'>
1665 <td style='padding:.75pt .75pt .75pt .75pt'>
1666 <p class=MsoNormal><tt><span lang=EN-US style='font-size:10.0pt'>isSet,
1667 isVisible, isFinished, isFound, isOpen </span></tt><span lang=EN-US
1668 style='font-size:10.0pt;font-family:Arial'><o:p></o:p></span></p>
1669 </td>
1670 </tr>
1671 <tr style='mso-yfti-irow:2;mso-yfti-lastrow:yes'>
1672 <td style='padding:.75pt .75pt .75pt .75pt'>
1673 <p class=MsoNormal><span lang=EN-US style='font-size:7.5pt;font-family:
1674 Arial'>Common practice in the C++ development community and partially
1675 enforced in Java. <o:p></o:p></span></p>
1676 <p><span lang=EN-US>Using <span class=GramE>the <i>is</i></span> prefix
1677 solves a common problem of choosing bad boolean names like </span><tt><span
1678 lang=EN-US style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>status</span></tt><span
1679 lang=EN-US> or </span><tt><span lang=EN-US style='mso-ansi-font-size:10.0pt;
1680 mso-bidi-font-size:10.0pt'>flag</span></tt><span lang=EN-US>. </span><span
1681 class=GramE><tt><span lang=EN-US style='mso-ansi-font-size:10.0pt;
1682 mso-bidi-font-size:10.0pt'>isStatus</span></tt></span><tt><span lang=EN-US
1683 style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'> </span></tt><span
1684 lang=EN-US>or</span><tt><span lang=EN-US style='mso-ansi-font-size:10.0pt;
1685 mso-bidi-font-size:10.0pt'> isFlag</span></tt><span lang=EN-US> simply
1686 doesn't fit, and the programmer is forced to choose more meaningful names. </span></p>
1687 <p><span lang=EN-US>There are a few alternatives to <span class=GramE>the <em><span
1688 style='font-family:Arial'>is</span></em></span> prefix that fits better in
1689 some situations. These are the <em><span style='font-family:Arial'>has</span></em>,
1690 <em><span style='font-family:Arial'>can</span></em> and <em><span
1691 style='font-family:Arial'>should</span></em> prefixes: </span></p>
1692 <p><tt><span lang=EN-US style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:
1693 10.0pt'>bool hasLicense(); </span></tt><span lang=EN-US><br>
1694 </span><tt><span lang=EN-US style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:
1695 10.0pt'>bool canEvaluate(); </span></tt><span lang=EN-US><br>
1696 </span><tt><span lang=EN-US style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:
1697 10.0pt'>bool shouldSort(); </span></tt></p>
1698 </td>
1699 </tr>
1700 </table>
1701 <p style='margin:0cm;margin-bottom:.0001pt'><!--
1702 ****************************************************************************
1703 Rule
1704 ****************************************************************************
1705 --><span lang=EN-US style='display:none;mso-hide:all'><o:p>&nbsp;</o:p></span></p>
1706 <table class=TableNormal border=1 cellpadding=0 width="100%"
1707 style='width:100.0%;mso-cellspacing:1.5pt;mso-padding-alt:0cm 5.4pt 0cm 5.4pt'>
1708 <tr style='mso-yfti-irow:0'>
1709 <td style='background:#BBCCEE;padding:.75pt .75pt .75pt .75pt'>
1710 <p class=MsoNormal><b><span lang=EN-US style='font-size:10.0pt;font-family:
1711 Arial'>25. Complement names must be used for complement operations [1]. <o:p></o:p></span></b></p>
1712 </td>
1713 </tr>
1714 <tr style='mso-yfti-irow:1'>
1715 <td style='padding:.75pt .75pt .75pt .75pt'>
1716 <p class=MsoNormal><tt><span lang=EN-US style='font-size:10.0pt'>get/set,
1717 add/remove, create/destroy, start/stop, insert/delete, increment/decrement,
1718 old/new, begin/end, first/last, up/down, min/max, next/previous, old/new,
1719 open/close, show/hide, suspend/resume, etc. </span></tt><span lang=EN-US
1720 style='font-size:10.0pt;font-family:Arial'><o:p></o:p></span></p>
1721 </td>
1722 </tr>
1723 <tr style='mso-yfti-irow:2;mso-yfti-lastrow:yes'>
1724 <td style='padding:.75pt .75pt .75pt .75pt'>
1725 <p class=MsoNormal><span lang=EN-US style='font-size:7.5pt;font-family:
1726 Arial'>Reduce complexity by symmetry.<o:p></o:p></span></p>
1727 </td>
1728 </tr>
1729 </table>
1730 <p style='margin:0cm;margin-bottom:.0001pt'><span lang=EN-US
1731 style='display:none;mso-hide:all'><o:p>&nbsp;</o:p></span></p>
1732 <table class=TableNormal border=1 cellpadding=0 width="100%"
1733 style='width:100.0%;mso-cellspacing:1.5pt;mso-padding-alt:0cm 5.4pt 0cm 5.4pt'>
1734 <tr style='mso-yfti-irow:0'>
1735 <td colspan="2" style='background:#BBCCEE;padding:.75pt .75pt .75pt .75pt'>
1736 <p class=MsoNormal><b><span lang=EN-US style='font-size:10.0pt;font-family:
1737 Arial'><!--
1738 ****************************************************************************
1739 Rule
1740 ****************************************************************************
1741 -->26. Abbreviations in names should be avoided.<o:p></o:p></span></b></p>
1742 </td>
1743 </tr>
1744 <tr style='mso-yfti-irow:1'>
1745 <td width="50%" style='padding:.75pt .75pt .75pt .75pt'>
1746 <p class=MsoNormal><tt><span lang=EN-US style='font-size:10.0pt'>computeAverage();</span></tt><span lang=EN-US style='font-size:
1747 10.0pt;font-family:Arial'><o:p></o:p></span></p>
1748 </td>
1749 <td width="50%" bgcolor="#FDB5A6" style='padding:.75pt .75pt .75pt .75pt'><span class="MsoNormal"><tt><span lang=EN-US style='font-size:10.0pt'>compAvg(); </span></tt><span lang=EN-US style='font-size:
1750 10.0pt;font-family:Arial'><o:p></o:p></span></span></td>
1751 </tr>
1752 <tr style='mso-yfti-irow:2;mso-yfti-lastrow:yes'>
1753 <td colspan="2" style='padding:.75pt .75pt .75pt .75pt'>
1754 <p class=MsoNormal><span lang=EN-US style='font-size:7.5pt;font-family:
1755 Arial'>There are two types of words to consider. First are the common words
1756 listed in a language <span class=GramE>dictionary.</span> These must never
1757 be abbreviated. Never write: <o:p></o:p></span></p>
1758 <p><span class=GramE><tt><span lang=EN-US style='mso-ansi-font-size:10.0pt;
1759 mso-bidi-font-size:10.0pt'>cmd</span></tt></span><tt><span lang=EN-US
1760 style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>&nbsp;&nbsp;</span></tt><span
1761 lang=EN-US> instead of </span><tt><span lang=EN-US style='mso-ansi-font-size:
1762 10.0pt;mso-bidi-font-size:10.0pt'>&nbsp; command</span></tt><span
1763 lang=EN-US><br>
1764 </span><tt><span lang=EN-US style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:
1765 10.0pt'>cp &nbsp;&nbsp;</span></tt><span lang=EN-US> instead of </span><tt><span
1766 lang=EN-US style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>&nbsp;
1767 copy</span></tt><span lang=EN-US><br>
1768 </span><tt><span lang=EN-US style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:
1769 10.0pt'>pt &nbsp;&nbsp;</span></tt><span lang=EN-US> instead of </span><tt><span
1770 lang=EN-US style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>&nbsp;
1771 point</span></tt><span lang=EN-US><br>
1772 </span><tt><span lang=EN-US style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:
1773 10.0pt'>comp&nbsp;</span></tt><span lang=EN-US> instead of </span><tt><span
1774 lang=EN-US style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>&nbsp;
1775 compute</span></tt><span lang=EN-US><br>
1776 </span><tt><span lang=EN-US style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:
1777 10.0pt'>init&nbsp;</span></tt><span lang=EN-US> instead of </span><tt><span
1778 lang=EN-US style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>&nbsp;
1779 initialize</span></tt><span lang=EN-US><br>
1780 etc.</span></p>
1781 <p><span lang=EN-US>Then there are domain specific phrases that are more
1782 naturally known through their abbreviations/acronym. These phrases should
1783 be kept abbreviated. Never write: </span></p>
1784 <p><tt><span lang=EN-US style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:
1785 10.0pt'>HypertextMarkupLanguage&nbsp; </span></tt><span lang=EN-US>instead
1786 of </span><tt><span lang=EN-US style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:
1787 10.0pt'>&nbsp; html</span></tt><span lang=EN-US><br>
1788 </span><tt><span lang=EN-US style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:
1789 10.0pt'>CentralProcessingUnit &nbsp;&nbsp; </span></tt><span lang=EN-US>instead
1790 of </span><tt><span lang=EN-US style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:
1791 10.0pt'>&nbsp; cpu</span></tt><span lang=EN-US><br>
1792 </span><tt><span lang=EN-US style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:
1793 10.0pt'>PriceEarningRatio &nbsp;&nbsp; &nbsp; &nbsp; </span></tt><span
1794 lang=EN-US>instead of </span><tt><span lang=EN-US style='mso-ansi-font-size:
1795 10.0pt;mso-bidi-font-size:10.0pt'>&nbsp; pe</span></tt><span lang=EN-US><br>
1796 etc. </span></p>
1797 </td>
1798 </tr>
1799 </table>
1800 <p style='margin:0cm;margin-bottom:.0001pt'><span lang=EN-US
1801 style='display:none;mso-hide:all'><o:p>&nbsp;</o:p></span></p>
1802 <table class=TableNormal border=1 cellpadding=0 width="100%"
1803 style='width:100.0%;mso-cellspacing:1.5pt;mso-padding-alt:0cm 5.4pt 0cm 5.4pt'>
1804 <tr style='mso-yfti-irow:0'>
1805 <td colspan="2" style='background:#BBCCEE;padding:.75pt .75pt .75pt .75pt'>
1806 <p class=MsoNormal><b><span lang=EN-US style='font-size:10.0pt;font-family:
1807 Arial'><!--
1808 ****************************************************************************
1809 Rule
1810 ****************************************************************************
1811 -->27. Naming pointers specifically should be avoided. <o:p></o:p></span></b></p>
1812 </td>
1813 </tr>
1814 <tr style='mso-yfti-irow:1'>
1815 <td width="50%" style='padding:.75pt .75pt .75pt .75pt'>
1816 <p class=MsoNormal><tt><span lang=EN-US style='font-size:10.0pt'>Line
1817 *line;&nbsp;</span></tt><span lang=EN-US style='font-size:10.0pt;font-family:Arial'><o:p></o:p></span></p>
1818 </td>
1819 <td width="50%" bgcolor="#FDB5A6" style='padding:.75pt .75pt .75pt .75pt'><p class="MsoNormal"><tt><span lang=EN-US style='font-size:10.0pt'> Line *pLine;&nbsp;</span></tt></p>
1820 <p class="MsoNormal"><tt><span lang=EN-US style='font-size:10.0pt'>Line *linePtr</span></tt><span class="MsoNormal"><span lang=EN-US style='font-size:10.0pt;font-family:Arial'><o:p></o:p></span></span></p> </td>
1821 </tr>
1822 <tr style='mso-yfti-irow:2;mso-yfti-lastrow:yes'>
1823 <td colspan="2" style='padding:.75pt .75pt .75pt .75pt'>
1824 <p class=MsoNormal><span lang=EN-US style='font-size:7.5pt;font-family:
1825 Arial'>Many variables in a C/C++ environment are pointers, so a convention
1826 like this is almost impossible to follow. Also objects in C++ are often
1827 oblique types where the specific implementation should be ignored by the
1828 programmer. Only when the actual type of an object is of special
1829 significance, the name should empahsize the type. <o:p></o:p></span></p>
1830 </td>
1831 </tr>
1832 </table>
1833 <p style='margin:0cm;margin-bottom:.0001pt'><span lang=EN-US
1834 style='display:none;mso-hide:all'><o:p>&nbsp;</o:p></span></p>
1835 <table class=TableNormal border=1 cellpadding=0 width="100%"
1836 style='width:100.0%;mso-cellspacing:1.5pt;mso-padding-alt:0cm 5.4pt 0cm 5.4pt'>
1837 <tr style='mso-yfti-irow:0'>
1838 <td colspan="2" style='background:#BBCCEE;padding:.75pt .75pt .75pt .75pt'>
1839 <p class=MsoNormal><b><span lang=EN-US style='font-size:10.0pt;font-family:
1840 Arial'><!--
1841 ****************************************************************************
1842 Rule
1843 ****************************************************************************
1844 -->28. Negated boolean variable names must be avoided. <o:p></o:p></span></b></p>
1845 </td>
1846 </tr>
1847 <tr style='mso-yfti-irow:1'>
1848 <td width="50%" style='padding:.75pt .75pt .75pt .75pt'>
1849 <p class=MsoNormal><tt><span lang=EN-US style='font-size:10.0pt'>bool
1850 isError;</span></tt><span
1851 lang=EN-US style='font-size:10.0pt;font-family:fixed;mso-bidi-font-family:
1852 "Courier New"'><br>
1853 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>bool
1854 isFound;&nbsp;</span></tt></span><span
1855 lang=EN-US style='font-size:10.0pt;font-family:Arial'><o:p></o:p></span></p>
1856 </td>
1857 <td width="50%" bgcolor="#FDB5A6" style='padding:.75pt .75pt .75pt .75pt'><p class="MsoNormal"><tt><span lang=EN-US style='font-size:10.0pt'>bool isNoError&nbsp;</span></tt><span
1858 lang=EN-US style='font-size:10.0pt;font-family:fixed;mso-bidi-font-family:
1859 "Courier New"'></span></p>
1860 <p class="MsoNormal"><span
1861 lang=EN-US style='font-size:10.0pt;font-family:fixed;mso-bidi-font-family:
1862 "Courier New"'><tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>bool isNotFound </span></tt></span></p></td>
1863 </tr>
1864 <tr style='mso-yfti-irow:2;mso-yfti-lastrow:yes'>
1865 <td colspan="2" style='padding:.75pt .75pt .75pt .75pt'>
1866 <p class=MsoNormal><span lang=EN-US style='font-size:7.5pt;font-family:
1867 Arial'>The problem arises when such a name is used in conjunction with the
1868 logical negation operator as <span class=GramE>this results</span> in a
1869 double negative. It is not immediately apparent <span class=GramE>what <tt><span
1870 style='mso-ansi-font-size:7.5pt;mso-bidi-font-size:7.5pt'>!</span></tt></span></span><tt><span
1871 lang=EN-US style='font-size:7.5pt'>isNotFound</span></tt><span lang=EN-US
1872 style='font-size:7.5pt;font-family:Arial'> means. <o:p></o:p></span></p>
1873 </td>
1874 </tr>
1875 </table>
1876 <p style='margin:0cm;margin-bottom:.0001pt'><span lang=EN-US
1877 style='display:none;mso-hide:all'><o:p>&nbsp;</o:p></span></p>
1878 <table class=TableNormal border=1 cellpadding=0 width="100%"
1879 style='width:100.0%;mso-cellspacing:1.5pt;mso-padding-alt:0cm 5.4pt 0cm 5.4pt'>
1880 <tr style='mso-yfti-irow:0'>
1881 <td style='background:#BBCCEE;padding:.75pt .75pt .75pt .75pt'>
1882 <p class=MsoNormal><b><span lang=EN-US style='font-size:10.0pt;font-family:
1883 Arial'><!--
1884 ****************************************************************************
1885 Rule
1886 ****************************************************************************
1887 -->29. Enumeration constants can be prefixed by a common type name. <o:p></o:p></span></b></p>
1888 </td>
1889 </tr>
1890 <tr style='mso-yfti-irow:1'>
1891 <td style='padding:.75pt .75pt .75pt .75pt'>
1892 <p class=MsoNormal><tt><span lang=EN-US style='font-size:10.0pt'>enum Color
1893 {</span></tt><span lang=EN-US style='font-size:10.0pt;font-family:fixed;
1894 mso-bidi-font-family:"Courier New"'><br>
1895 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;
1896 COLOR_RED,</span></tt><br>
1897 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;
1898 COLOR_GREEN,</span></tt><br>
1899 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;
1900 COLOR_BLUE</span></tt><br>
1901 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>}; </span></tt></span><span
1902 lang=EN-US style='font-size:10.0pt;font-family:Arial'><o:p></o:p></span></p>
1903 </td>
1904 </tr>
1905 <tr style='mso-yfti-irow:2;mso-yfti-lastrow:yes'>
1906 <td style='padding:.75pt .75pt .75pt .75pt'>
1907 <p class=MsoNormal><span lang=EN-US style='font-size:7.5pt;font-family:
1908 Arial'>This gives additional information of where the declaration can be
1909 found, which <span class=GramE>constants belongs</span> together, and what
1910 concept the constants represent. <o:p></o:p></span></p>
1911 <p><span lang=EN-US>An alternative approach is to always refer to the
1912 constants through their common type: </span><tt><span lang=EN-US
1913 style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>Color::RED</span></tt><span
1914 lang=EN-US>, </span><tt><span lang=EN-US style='mso-ansi-font-size:10.0pt;
1915 mso-bidi-font-size:10.0pt'>Airline::AIR_FRANCE</span></tt><span lang=EN-US>
1916 etc. </span></p>
1917 </td>
1918 </tr>
1919 </table>
1920 <p style='margin:0cm;margin-bottom:.0001pt'><span lang=EN-US
1921 style='display:none;mso-hide:all'><o:p>&nbsp;</o:p></span></p>
1922 <table class=TableNormal border=1 cellpadding=0 width="100%"
1923 style='width:100.0%;mso-cellspacing:1.5pt;mso-padding-alt:0cm 5.4pt 0cm 5.4pt'>
1924 <tr style='mso-yfti-irow:0'>
1925 <td style='background:#BBCCEE;padding:.75pt .75pt .75pt .75pt'>
1926 <p class=MsoNormal><b><span lang=EN-US style='font-size:10.0pt;font-family:
1927 Arial'><!--
1928 ****************************************************************************
1929 Rule
1930 ****************************************************************************
1931 -->30. Exception classes should be suffixed with <em><span style='font-family:
1932 Arial'>Exception</span></em>. <o:p></o:p></span></b></p>
1933 </td>
1934 </tr>
1935 <tr style='mso-yfti-irow:1'>
1936 <td style='padding:.75pt .75pt .75pt .75pt'>
1937 <p class=MsoNormal><tt><span lang=EN-US style='font-size:10.0pt'>class
1938 AccessException</span></tt><span lang=EN-US style='font-size:10.0pt;
1939 font-family:fixed;mso-bidi-font-family:"Courier New"'> <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>{</span></tt><br>
1940 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>&nbsp;
1941 :</span></tt><br>
1942 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>}</span></tt></span><span
1943 lang=EN-US style='font-size:10.0pt;font-family:Arial'><o:p></o:p></span></p>
1944 </td>
1945 </tr>
1946 <tr style='mso-yfti-irow:2;mso-yfti-lastrow:yes'>
1947 <td style='padding:.75pt .75pt .75pt .75pt'>
1948 <p class=MsoNormal><span lang=EN-US style='font-size:7.5pt;font-family:
1949 Arial'>Exception classes are really not part of the main design of the
1950 program, and naming them like this makes them stand out relative to the
1951 other classes. <o:p></o:p></span></p>
1952 </td>
1953 </tr>
1954 </table>
1955 <p style='margin:0cm;margin-bottom:.0001pt'><span lang=EN-US
1956 style='display:none;mso-hide:all'><o:p>&nbsp;</o:p></span></p>
1957 <table class=TableNormal border=1 cellpadding=0 width="100%"
1958 style='width:100.0%;mso-cellspacing:1.5pt;mso-padding-alt:0cm 5.4pt 0cm 5.4pt'>
1959 <tr style='mso-yfti-irow:0'>
1960 <td style='background:#BBCCEE;padding:.75pt .75pt .75pt .75pt'>
1961 <p class=MsoNormal><b><span lang=EN-US style='font-size:10.0pt;font-family:
1962 Arial'><!--
1963 ****************************************************************************
1964 Rule
1965 ****************************************************************************
1966 -->31. Functions (methods returning something) should be named after what they
1967 return and procedures (<i>void</i> methods) after what they do. <o:p></o:p></span></b></p>
1968 </td>
1969 </tr>
1970 <tr style='mso-yfti-irow:1'>
1971 <td style='padding:.75pt .75pt .75pt .75pt'>
1972 <p class=MsoNormal><span lang=EN-US style='font-size:10.0pt;font-family:
1973 Arial'><o:p>&nbsp;</o:p></span></p>
1974 </td>
1975 </tr>
1976 <tr style='mso-yfti-irow:2;mso-yfti-lastrow:yes'>
1977 <td style='padding:.75pt .75pt .75pt .75pt'>
1978 <p class=MsoNormal><span lang=EN-US style='font-size:7.5pt;font-family:
1979 Arial'>Increase readability. Makes it clear what the unit should do and
1980 especially all the things it is not supposed to do. This again makes it
1981 easier to keep the code clean of side effects. <o:p></o:p></span></p>
1982 </td>
1983 </tr>
1984 </table>
1985 <p style='margin-bottom:12.0pt'><span lang=EN-US><br style='mso-special-character:
1986 line-break'>
1987 <![if !supportLineBreakNewLine]><br style='mso-special-character:line-break'>
1988 <![endif]></span></p>
1989 <h2><a name=Files></a><span lang=EN-US>4 Files</span></h2>
1990 <h3><a name="Source_Files"></a><span lang=EN-US>4.1 Source Files<o:p></o:p></span></h3>
1991 <!--
1992 ****************************************************************************
1993 Rule
1994 ****************************************************************************
1995 -->
1996 <table class=TableNormal border=1 cellpadding=0 width="100%"
1997 style='width:100.0%;mso-cellspacing:1.5pt;mso-padding-alt:0cm 5.4pt 0cm 5.4pt'>
1998 <tr style='mso-yfti-irow:0'>
1999 <td colspan="2" style='background:#BBCCEE;padding:.75pt .75pt .75pt .75pt'>
2000 <p class=MsoNormal><b><span lang=EN-US style='font-size:10.0pt;font-family:
2001 Arial'>32. C++ header files should have the extension <i>.hpp</i>. Source
2002 files can have the extension <i>.</i>cpp (recommend), .cc, .c++ or .C. <o:p>And all of the file names shold be capitalized.</o:p></span></b></p>
2003 </td>
2004 </tr>
2005 <tr style='mso-yfti-irow:1'>
2006 <td width="50%" style='padding:.75pt .75pt .75pt .75pt'>
2007 <p class=MsoNormal><tt><span lang=EN-US style='font-size:10.0pt'>MyClass.hpp</span></tt></p>
2008 <p class=MsoNormal><tt><span lang=EN-US style='font-size:10.0pt'>MyClass.cpp </span></tt><span lang=EN-US style='font-size:10.0pt;
2009 font-family:Arial'><o:p></o:p></span></p></td>
2010 <td width="50%" bgcolor="#FDB5A6" style='padding:.75pt .75pt .75pt .75pt'><p class=MsoNormal><tt><span lang=EN-US style='font-size:10.0pt'>myClass.hpp</span></tt></p>
2011 <p class=MsoNormal><tt><span lang=EN-US style='font-size:10.0pt'>myClass.cpp </span></tt><span lang=EN-US style='font-size:10.0pt;
2012 font-family:Arial'><o:p></o:p></span></p></td>
2013 </tr>
2014 <tr style='mso-yfti-irow:2;mso-yfti-lastrow:yes'>
2015 <td colspan="2" style='padding:.75pt .75pt .75pt .75pt'>
2016 <p class=MsoNormal><span lang=EN-US style='font-size:7.5pt;font-family:
2017 Arial'>These are all accepted C++ standards for file extension. <o:p></o:p></span></p>
2018 </td>
2019 </tr>
2020 </table>
2021 <p style='margin:0cm;margin-bottom:.0001pt'><span lang=EN-US
2022 style='display:none;mso-hide:all'><o:p>&nbsp;</o:p></span></p>
2023 <table class=TableNormal border=1 cellpadding=0 width="100%"
2024 style='width:100.0%;mso-cellspacing:1.5pt;mso-padding-alt:0cm 5.4pt 0cm 5.4pt'>
2025 <tr style='mso-yfti-irow:0'>
2026 <td style='background:#BBCCEE;padding:.75pt .75pt .75pt .75pt'>
2027 <p class=MsoNormal><b><span lang=EN-US style='font-size:10.0pt;font-family:
2028 Arial'><!--
2029 ****************************************************************************
2030 Rule
2031 ****************************************************************************
2032 -->33. A class should be declared in a header file and defined in a source file
2033 where the <span class=GramE>name of the files match</span> the name of the
2034 class. <o:p></o:p></span></b></p>
2035 </td>
2036 </tr>
2037 <tr style='mso-yfti-irow:1'>
2038 <td style='padding:.75pt .75pt .75pt .75pt'>
2039 <p class=MsoNormal><tt><span lang=EN-US style='font-size:10.0pt'>MyClass.hpp,
2040 MyClass.cpp</span></tt><span lang=EN-US style='font-size:10.0pt;
2041 font-family:Arial'><o:p></o:p></span></p>
2042 </td>
2043 </tr>
2044 <tr style='mso-yfti-irow:2;mso-yfti-lastrow:yes'>
2045 <td style='padding:.75pt .75pt .75pt .75pt'>
2046 <p class=MsoNormal><span lang=EN-US style='font-size:7.5pt;font-family:
2047 Arial'>Makes it easy to find the associated files of a given class. This
2048 convention is enforced in Java and has become very successful as such. <o:p></o:p></span></p>
2049 </td>
2050 </tr>
2051 </table>
2052 <p style='margin:0cm;margin-bottom:.0001pt'><span lang=EN-US
2053 style='display:none;mso-hide:all'><o:p>&nbsp;</o:p></span></p>
2054 <table class=TableNormal border=1 cellpadding=0 width="100%"
2055 style='width:100.0%;mso-cellspacing:1.5pt;mso-padding-alt:0cm 5.4pt 0cm 5.4pt'>
2056 <tr style='mso-yfti-irow:0'>
2057 <td style='background:#BBCCEE;padding:.75pt .75pt .75pt .75pt'>
2058 <p class=MsoNormal><b><span lang=EN-US style='font-size:10.0pt;font-family:
2059 Arial'><!--
2060 ****************************************************************************
2061 Rule
2062 ****************************************************************************
2063 -->34. All definitions should reside in source files. <o:p></o:p></span></b></p>
2064 </td>
2065 </tr>
2066 <tr style='mso-yfti-irow:1'>
2067 <td style='padding:.75pt .75pt .75pt .75pt'>
2068 <p class=MsoNormal><tt><span lang=EN-US style='font-size:10.0pt'>class
2069 MyClass </span></tt><span lang=EN-US style='font-size:10.0pt;font-family:
2070 fixed;mso-bidi-font-family:"Courier New"'><br>
2071 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>{ </span></tt><br>
2072 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>&nbsp;
2073 public: </span></tt><br>
2074 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>&nbsp;
2075 &nbsp; int getValue () {return value_;} // NO! </span></tt><br>
2076 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>&nbsp;
2077 &nbsp; ... </span></tt><br>
2078 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>&nbsp;
2079 private: </span></tt><br>
2080 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>&nbsp;
2081 &nbsp; int value_; </span></tt><br>
2082 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>} </span></tt></span><span
2083 lang=EN-US style='font-size:10.0pt;font-family:Arial'><o:p></o:p></span></p>
2084 </td>
2085 </tr>
2086 <tr style='mso-yfti-irow:2;mso-yfti-lastrow:yes'>
2087 <td style='padding:.75pt .75pt .75pt .75pt'>
2088 <p class=MsoNormal><span lang=EN-US style='font-size:7.5pt;font-family:
2089 Arial'>The header files should declare an <span class=GramE>interface,</span>
2090 the source file should implement it. When looking for an implementation,
2091 the programmer should always know that it is found in the source file. The
2092 obvious exception to this rule is of course inline functions that must be
2093 defined in the header file. <o:p></o:p></span></p>
2094 </td>
2095 </tr>
2096 </table>
2097 <p style='margin:0cm;margin-bottom:.0001pt'><span lang=EN-US
2098 style='display:none;mso-hide:all'><o:p>&nbsp;</o:p></span></p>
2099 <table class=TableNormal border=1 cellpadding=0 width="100%"
2100 style='width:100.0%;mso-cellspacing:1.5pt;mso-padding-alt:0cm 5.4pt 0cm 5.4pt'>
2101 <tr style='mso-yfti-irow:0'>
2102 <td style='background:#BBCCEE;padding:.75pt .75pt .75pt .75pt'>
2103 <p class=MsoNormal><b><span lang=EN-US style='font-size:10.0pt;font-family:
2104 Arial'><!--
2105 ****************************************************************************
2106 Rule
2107 ****************************************************************************
2108 -->35. File content must be kept within 80 columns. <o:p></o:p></span></b></p>
2109 </td>
2110 </tr>
2111 <tr style='mso-yfti-irow:1'>
2112 <td style='padding:.75pt .75pt .75pt .75pt'>
2113 <p class=MsoNormal><span lang=EN-US style='font-size:10.0pt;font-family:
2114 Arial'><o:p>&nbsp;</o:p></span></p>
2115 </td>
2116 </tr>
2117 <tr style='mso-yfti-irow:2;mso-yfti-lastrow:yes'>
2118 <td style='padding:.75pt .75pt .75pt .75pt'>
2119 <p class=MsoNormal><span lang=EN-US style='font-size:7.5pt;font-family:
2120 Arial'>80 columns is a common dimension for editors, terminal emulators,
2121 printers and debuggers, and files that are shared between several people
2122 should keep within these constraints. It improves readability when
2123 unintentional line breaks are avoided when passing a file between
2124 programmers. <o:p></o:p></span></p>
2125 </td>
2126 </tr>
2127 </table>
2128 <p style='margin:0cm;margin-bottom:.0001pt'><span lang=EN-US
2129 style='display:none;mso-hide:all'><o:p>&nbsp;</o:p></span></p>
2130 <table class=TableNormal border=1 cellpadding=0 width="100%"
2131 style='width:100.0%;mso-cellspacing:1.5pt;mso-padding-alt:0cm 5.4pt 0cm 5.4pt'>
2132 <tr style='mso-yfti-irow:0'>
2133 <td style='background:#BBCCEE;padding:.75pt .75pt .75pt .75pt'>
2134 <p class=MsoNormal><b><span lang=EN-US style='font-size:10.0pt;font-family:
2135 Arial'><!--
2136 ****************************************************************************
2137 Rule
2138 ****************************************************************************
2139 -->36. Special characters like TAB and page break must be avoided. <o:p></o:p></span></b></p>
2140 </td>
2141 </tr>
2142 <tr style='mso-yfti-irow:1'>
2143 <td style='padding:.75pt .75pt .75pt .75pt'>
2144 <p class=MsoNormal><span lang=EN-US style='font-size:10.0pt;font-family:
2145 Arial'><o:p>&nbsp;</o:p></span></p>
2146 </td>
2147 </tr>
2148 <tr style='mso-yfti-irow:2;mso-yfti-lastrow:yes'>
2149 <td style='padding:.75pt .75pt .75pt .75pt'>
2150 <p class=MsoNormal><span lang=EN-US style='font-size:7.5pt;font-family:
2151 Arial'>These characters are bound to cause problem for editors, printers,
2152 terminal emulators or debuggers when used in a multi-programmer,
2153 multi-platform environment. <o:p> Xemacs inserts hard TAB into files which should be avoided </o:p></span></p>
2154 <p class=MsoNormal><span lang=EN-US style='font-size:7.5pt;font-family:
2155 Arial'><o:p></o:p></span></p>
2156 <p class=MsoNormal><span lang=EN-US style='font-size:7.5pt;font-family:
2157 Arial'><o:p><span class="style1"> Indent everything to 4 spaces </span></o:p></span></p></td>
2158 </tr>
2159 </table>
2160 <p style='margin:0cm;margin-bottom:.0001pt'><span lang=EN-US
2161 style='display:none;mso-hide:all'><o:p>&nbsp;</o:p></span></p>
2162 <table class=TableNormal border=1 cellpadding=0 width="100%"
2163 style='width:100.0%;mso-cellspacing:1.5pt;mso-padding-alt:0cm 5.4pt 0cm 5.4pt'>
2164 <tr style='mso-yfti-irow:0'>
2165 <td style='background:#BBCCEE;padding:.75pt .75pt .75pt .75pt'>
2166 <p class=MsoNormal><b><span lang=EN-US style='font-size:10.0pt;font-family:
2167 Arial'><!--
2168 ****************************************************************************
2169 Rule
2170 ****************************************************************************
2171 -->37. The incompleteness of split lines must be made obvious [1]. <o:p></o:p></span></b></p>
2172 </td>
2173 </tr>
2174 <tr style='mso-yfti-irow:1'>
2175 <td style='padding:.75pt .75pt .75pt .75pt'>
2176 <p class=MsoNormal><tt><span lang=EN-US style='font-size:10.0pt'>totalSum =
2177 a + b + c +</span></tt><span lang=EN-US style='font-size:10.0pt;font-family:
2178 fixed;mso-bidi-font-family:"Courier New"'><br>
2179 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
2180 d + e;</span></tt><br>
2181 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>function
2182 (param1, param2,</span></tt><br>
2183 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
2184 param3);</span></tt><br>
2185 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>setText
2186 (&quot;Long line split&quot;</span></tt><br>
2187 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
2188 &quot;into two parts.&quot;);</span></tt><br>
2189 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>for
2190 (tableNo = 0; tableNo &lt; nTables;</span></tt><br>
2191 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;
2192 tableNo += tableStep) </span></tt></span><span lang=EN-US style='font-size:
2193 10.0pt;font-family:Arial'><o:p></o:p></span></p>
2194 </td>
2195 </tr>
2196 <tr style='mso-yfti-irow:2;mso-yfti-lastrow:yes'>
2197 <td style='padding:.75pt .75pt .75pt .75pt'>
2198 <p class=MsoNormal><st1:City><st1:place><span lang=EN-US style='font-size:
2199 7.5pt;font-family:Arial'>Split</span></st1:place></st1:City><span
2200 lang=EN-US style='font-size:7.5pt;font-family:Arial'> lines occurs when a
2201 statement exceed the 80 column limit given above. It is difficult to give
2202 rigid rules for how lines should be split, but the examples above should
2203 give a general hint. <o:p></o:p></span></p>
2204 <p><span lang=EN-US>In general: </span></p>
2205 <ul type=disc>
2206 <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:
2207 auto;mso-list:l2 level1 lfo6;tab-stops:list 36.0pt'><span lang=EN-US
2208 style='font-size:10.0pt;font-family:Arial'>Break after a comma. <o:p></o:p></span></li>
2209 <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:
2210 auto;mso-list:l2 level1 lfo6;tab-stops:list 36.0pt'><span lang=EN-US
2211 style='font-size:10.0pt;font-family:Arial'>Break after an operator. <o:p></o:p></span></li>
2212 <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:
2213 auto;mso-list:l2 level1 lfo6;tab-stops:list 36.0pt'><span lang=EN-US
2214 style='font-size:10.0pt;font-family:Arial'>Align the new line with the
2215 beginning of the expression on the previous line. <o:p></o:p></span></li>
2216 </ul>
2217 </td>
2218 </tr>
2219 </table>
2220 <h3><a name="Include_Files"></a><span lang=EN-US>4.2 Include Files and
2221 Include Statements<o:p></o:p></span></h3>
2222 <!--
2223 ****************************************************************************
2224 Rule
2225 ****************************************************************************
2226 -->
2227 <table class=TableNormal border=1 cellpadding=0 width="100%"
2228 style='width:100.0%;mso-cellspacing:1.5pt;mso-padding-alt:0cm 5.4pt 0cm 5.4pt'>
2229 <tr style='mso-yfti-irow:0'>
2230 <td colspan="2" style='background:#BBCCEE;padding:.75pt .75pt .75pt .75pt'>
2231 <p class=MsoNormal><b><span lang=EN-US style='font-size:10.0pt;font-family:
2232 Arial'>38. Header files must include a construction that prevents multiple <span
2233 class=GramE>inclusion</span>. The convention is an all uppercase
2234 construction of the module name, the file name and the hpp suffix. <o:p></o:p></span></b></p>
2235 </td>
2236 </tr>
2237 <tr style='mso-yfti-irow:1'>
2238 <td style='padding:.75pt .75pt .75pt .75pt'>
2239 <p class=MsoNormal><tt><span lang=EN-US style='font-size:10.0pt'>#ifndef MOD_FILENAME_H</span></tt><span
2240 lang=EN-US style='font-size:10.0pt;font-family:fixed;mso-bidi-font-family:
2241 "Courier New"'>PP<br>
2242 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>#define
2243 MOD_FILENAME_H</span></tt>PP<br>
2244 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>&nbsp;:</span></tt><br>
2245 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>#endif
2246 </span></tt></span><span lang=EN-US style='font-size:10.0pt;font-family:
2247 Arial'><o:p></o:p></span></p>
2248 </td>
2249 <td bgcolor="#FDB5A6" style='padding:.75pt .75pt .75pt .75pt'><span class="MsoNormal"><tt><span lang=EN-US style='font-size:10.0pt'>#ifndef _MOD_FILENAME_H</span></tt><span
2250 lang=EN-US style='font-size:10.0pt;font-family:fixed;mso-bidi-font-family:
2251 "Courier New"'>PP_<br>
2252 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>#define _MOD_FILENAME_H</span></tt>PP_<br>
2253 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>&nbsp;:</span></tt><br>
2254 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>#endif </span></tt></span><span lang=EN-US style='font-size:10.0pt;font-family:
2255 Arial'><o:p></o:p></span></span></td>
2256 </tr>
2257 <tr style='mso-yfti-irow:2;mso-yfti-lastrow:yes'>
2258 <td colspan="2" style='padding:.75pt .75pt .75pt .75pt'>
2259 <p class=MsoNormal><span lang=EN-US style='font-size:7.5pt;font-family:
2260 Arial'>The construction is to avoid compilation errors. The name convention
2261 is common practice. The construction should appear in the top of the file
2262 (before the file header) so file parsing is aborted immediately and
2263 compilation time is reduced. <o:p></o:p></span></p>
2264 </td>
2265 </tr>
2266 </table>
2267 <p style='margin:0cm;margin-bottom:.0001pt'><span lang=EN-US
2268 style='display:none;mso-hide:all'><o:p>&nbsp;</o:p></span></p>
2269 <table class=TableNormal border=1 cellpadding=0 width="100%"
2270 style='width:100.0%;mso-cellspacing:1.5pt;mso-padding-alt:0cm 5.4pt 0cm 5.4pt'>
2271 <tr style='mso-yfti-irow:0'>
2272 <td style='background:#BBCCEE;padding:.75pt .75pt .75pt .75pt'>
2273 <p class=MsoNormal><b><span lang=EN-US style='font-size:10.0pt;font-family:
2274 Arial'><!--
2275 ****************************************************************************
2276 Rule
2277 ****************************************************************************
2278 -->39. Include statements should be sorted and grouped. Sorted by their
2279 hierarchical position in the system with low level files included first.
2280 Leave an empty line between groups of include statements. <o:p></o:p></span></b></p>
2281 </td>
2282 </tr>
2283 <tr style='mso-yfti-irow:1'>
2284 <td style='padding:.75pt .75pt .75pt .75pt'>
2285 <p class=MsoNormal><tt><span lang=EN-US style='font-size:10.0pt'>#include
2286 &lt;fstream&gt;</span></tt><span lang=EN-US style='font-size:10.0pt;
2287 font-family:fixed;mso-bidi-font-family:"Courier New"'><br>
2288 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>#include
2289 &lt;iomanip&gt;</span></tt><br>
2290 <br>
2291 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>#include
2292 &lt;Xm/Xm.h&gt;</span></tt><br>
2293 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>#include
2294 &lt;Xm/ToggleB.h&gt;</span></tt><br>
2295 <br>
2296 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>#include
2297 &quot;ui/PropertiesDialog.h&quot;</span></tt><br>
2298 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>#include
2299 &quot;ui/MainWindow.h&quot; </span></tt></span><span lang=EN-US
2300 style='font-size:10.0pt;font-family:Arial'><o:p></o:p></span></p>
2301 </td>
2302 </tr>
2303 <tr style='mso-yfti-irow:2;mso-yfti-lastrow:yes'>
2304 <td style='padding:.75pt .75pt .75pt .75pt'>
2305 <p class=MsoNormal><span lang=EN-US style='font-size:7.5pt;font-family:
2306 Arial'>In addition to show the reader the individual include files, it also
2307 give an immediate clue about the modules that are involved. <o:p></o:p></span></p>
2308 <p><span lang=EN-US>Include file paths must never be absolute. Compiler
2309 directives should instead be used to indicate root directories for
2310 includes. </span></p>
2311 </td>
2312 </tr>
2313 </table>
2314 <p style='margin:0cm;margin-bottom:.0001pt'><span lang=EN-US
2315 style='display:none;mso-hide:all'><o:p>&nbsp;</o:p></span></p>
2316 <table class=TableNormal border=1 cellpadding=0 width="100%"
2317 style='width:100.0%;mso-cellspacing:1.5pt;mso-padding-alt:0cm 5.4pt 0cm 5.4pt'>
2318 <tr style='mso-yfti-irow:0'>
2319 <td style='background:#BBCCEE;padding:.75pt .75pt .75pt .75pt'>
2320 <p class=MsoNormal><b><span lang=EN-US style='font-size:10.0pt;font-family:
2321 Arial'><!--
2322 ****************************************************************************
2323 Rule
2324 ****************************************************************************
2325 -->40. Include statements must be located at the top of a file only. <o:p></o:p></span></b></p>
2326 </td>
2327 </tr>
2328 <tr style='mso-yfti-irow:1'>
2329 <td style='padding:.75pt .75pt .75pt .75pt'>
2330 <p class=MsoNormal><span lang=EN-US style='font-size:10.0pt;font-family:
2331 Arial'><o:p>&nbsp;</o:p></span></p>
2332 </td>
2333 </tr>
2334 <tr style='mso-yfti-irow:2;mso-yfti-lastrow:yes'>
2335 <td style='padding:.75pt .75pt .75pt .75pt'>
2336 <p class=MsoNormal><span lang=EN-US style='font-size:7.5pt;font-family:
2337 Arial'>Common practice. Avoid unwanted compilation side effects by
2338 &quot;hidden&quot; include statements deep into a source file. <o:p></o:p></span></p>
2339 </td>
2340 </tr>
2341 </table>
2342 <p style='margin-bottom:12.0pt'><span lang=EN-US><br style='mso-special-character:
2343 line-break'>
2344 <![if !supportLineBreakNewLine]><br style='mso-special-character:line-break'>
2345 <![endif]></span></p>
2346 <h2><a name=Statements></a><span lang=EN-US>5 Statements</span></h2>
2347 <h3><a name=Types></a><span lang=EN-US>5.1 Types<o:p></o:p></span></h3>
2348 <!--
2349 ****************************************************************************
2350 Rule
2351 ****************************************************************************
2352 -->
2353 <table class=TableNormal border=1 cellpadding=0 width="100%"
2354 style='width:100.0%;mso-cellspacing:1.5pt;mso-padding-alt:0cm 5.4pt 0cm 5.4pt'>
2355 <tr style='mso-yfti-irow:0'>
2356 <td style='background:#BBCCEE;padding:.75pt .75pt .75pt .75pt'>
2357 <p class=MsoNormal><b><span lang=EN-US style='font-size:10.0pt;font-family:
2358 Arial'>41. Types that are local to one file only can be declared inside
2359 that file. <o:p></o:p></span></b></p>
2360 </td>
2361 </tr>
2362 <tr style='mso-yfti-irow:1'>
2363 <td style='padding:.75pt .75pt .75pt .75pt'>
2364 <p class=MsoNormal><span lang=EN-US style='font-size:10.0pt;font-family:
2365 Arial'><o:p>&nbsp;</o:p></span></p>
2366 </td>
2367 </tr>
2368 <tr style='mso-yfti-irow:2;mso-yfti-lastrow:yes'>
2369 <td style='padding:.75pt .75pt .75pt .75pt'>
2370 <p class=MsoNormal><span lang=EN-US style='font-size:7.5pt;font-family:
2371 Arial'>Enforces information hiding. <o:p></o:p></span></p>
2372 </td>
2373 </tr>
2374 </table>
2375 <p style='margin:0cm;margin-bottom:.0001pt'><span lang=EN-US
2376 style='display:none;mso-hide:all'><o:p>&nbsp;</o:p></span></p>
2377 <table class=TableNormal border=1 cellpadding=0 width="100%"
2378 style='width:100.0%;mso-cellspacing:1.5pt;mso-padding-alt:0cm 5.4pt 0cm 5.4pt'>
2379 <tr style='mso-yfti-irow:0'>
2380 <td style='background:#BBCCEE;padding:.75pt .75pt .75pt .75pt'>
2381 <p class=MsoNormal><b><span lang=EN-US style='font-size:10.0pt;font-family:
2382 Arial'><!--
2383 ****************************************************************************
2384 Rule
2385 ****************************************************************************
2386 -->42. The parts of a class must be sorted <i>public</i>, <i>protected </i>and <i>private</i>
2387 [2<span class=GramE>][</span>3]. All sections must be identified
2388 explicitly. Not applicable sections should be left out. <o:p></o:p></span></b></p>
2389 </td>
2390 </tr>
2391 <tr style='mso-yfti-irow:1'>
2392 <td style='padding:.75pt .75pt .75pt .75pt'>
2393 <p class=MsoNormal><span lang=EN-US style='font-size:10.0pt;font-family:
2394 Arial'><o:p>&nbsp;</o:p></span></p>
2395 </td>
2396 </tr>
2397 <tr style='mso-yfti-irow:2;mso-yfti-lastrow:yes'>
2398 <td style='padding:.75pt .75pt .75pt .75pt'>
2399 <p class=MsoNormal><span lang=EN-US style='font-size:7.5pt;font-family:
2400 Arial'>The ordering is <i>&quot;most public first&quot;</i> so people who
2401 only wish to use the class can stop reading when they reach the </span><tt><span
2402 lang=EN-US style='font-size:7.5pt'>protected/private</span></tt><span
2403 lang=EN-US style='font-size:7.5pt;font-family:Arial'> sections. <o:p></o:p></span></p>
2404 </td>
2405 </tr>
2406 </table>
2407 <p style='margin:0cm;margin-bottom:.0001pt'><span lang=EN-US
2408 style='display:none;mso-hide:all'><o:p>&nbsp;</o:p></span></p>
2409 <table class=TableNormal border=1 cellpadding=0 width="100%"
2410 style='width:100.0%;mso-cellspacing:1.5pt;mso-padding-alt:0cm 5.4pt 0cm 5.4pt'>
2411 <tr style='mso-yfti-irow:0'>
2412 <td colspan="2" style='background:#BBCCEE;padding:.75pt .75pt .75pt .75pt'>
2413 <p class=MsoNormal><b><span lang=EN-US style='font-size:10.0pt;font-family:
2414 Arial'><!--
2415 ****************************************************************************
2416 Rule
2417 ****************************************************************************
2418 -->43. Type conversions must always be done explicitly. Never rely on implicit
2419 type conversion. <o:p></o:p></span></b></p>
2420 </td>
2421 </tr>
2422 <tr style='mso-yfti-irow:1'>
2423 <td width="50%" style='padding:.75pt .75pt .75pt .75pt'>
2424 <p class=MsoNormal><span class=GramE><tt><span lang=EN-US style='font-size:
2425 10.0pt'>floatValue</span></tt></span><tt><span lang=EN-US style='font-size:
2426 10.0pt'> = static_cast&lt;float&gt; (intValue);&nbsp; &nbsp; // YES! </span></tt><span
2427 lang=EN-US style='font-size:10.0pt;font-family:fixed;mso-bidi-font-family:
2428 "Courier New"'><br>
2429 </span><span
2430 lang=EN-US style='font-size:10.0pt;font-family:Arial'><o:p></o:p></span></p>
2431 </td>
2432 <td width="50%" bgcolor="#FDB5A6" style='padding:.75pt .75pt .75pt .75pt'><span class="MsoNormal"><span
2433 lang=EN-US style='font-size:10.0pt;font-family:fixed;mso-bidi-font-family:
2434 "Courier New"'><span class=GramE><tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:
2435 10.0pt'>floatValue</span></tt></span><tt><span style='mso-ansi-font-size:
2436 10.0pt;mso-bidi-font-size:10.0pt'> = intValue; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// NO! </span></tt></span><span
2437 lang=EN-US style='font-size:10.0pt;font-family:Arial'><o:p></o:p></span></span></td>
2438 </tr>
2439 <tr style='mso-yfti-irow:2;mso-yfti-lastrow:yes'>
2440 <td colspan="2" style='padding:.75pt .75pt .75pt .75pt'>
2441 <p class=MsoNormal><span lang=EN-US style='font-size:7.5pt;font-family:
2442 Arial'>By this, the programmer indicates that he is aware of the different
2443 types involved and that the mix is intentional. <o:p></o:p></span></p>
2444 </td>
2445 </tr>
2446 </table>
2447 <h3><a name=Variables></a><span lang=EN-US>5.2 Variables<o:p></o:p></span></h3>
2448 <!--
2449 ****************************************************************************
2450 Rule
2451 ****************************************************************************
2452 -->
2453 <table class=TableNormal border=1 cellpadding=0 width="100%"
2454 style='width:100.0%;mso-cellspacing:1.5pt;mso-padding-alt:0cm 5.4pt 0cm 5.4pt'>
2455 <tr style='mso-yfti-irow:0'>
2456 <td colspan="2" style='background:#BBCCEE;padding:.75pt .75pt .75pt .75pt'>
2457 <p class=MsoNormal><b><span lang=EN-US style='font-size:10.0pt;font-family:
2458 Arial'>44. Variables should be initialized where they are declared. <o:p></o:p></span></b></p>
2459 </td>
2460 </tr>
2461 <tr style='mso-yfti-irow:1'>
2462 <td width="50%" style='padding:.75pt .75pt .75pt .75pt'><p class="style4">int x = 10;
2463 </p>
2464 <p class="style4">int y = 20; </p>
2465 <p class=MsoNormal><span lang=EN-US style='font-size:10.0pt;font-family: fixed'><o:p>&nbsp;</o:p></span><span lang=EN-US style='font-size:10.0pt;font-family:
2466 Arial'><o:p></o:p></span></p>
2467 </td>
2468 <td width="50%" bgcolor="#FDB5A6" style='padding:.75pt .75pt .75pt .75pt'><p class="style4 style5">int x;</p>
2469 <p class="style6">int y;</p>
2470 <p class="style6">x = 10;</p>
2471 <p class="style6">y = 20;</p> </td>
2472 </tr>
2473 <tr style='mso-yfti-irow:2;mso-yfti-lastrow:yes'>
2474 <td colspan="2" style='padding:.75pt .75pt .75pt .75pt'>
2475 <p class=MsoNormal><span lang=EN-US style='font-size:7.5pt;font-family:
2476 Arial'>This ensures that variables are valid at any time. Sometimes it is
2477 impossible to initialize a variable to a valid value where it is declared: <o:p></o:p></span></p>
2478 <p><tt><span lang=ES style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:
2479 10.0pt;mso-ansi-language:ES'>int x, y, z; </span></tt><span lang=ES
2480 style='font-family:fixed;mso-bidi-font-family:"Courier New";mso-ansi-language:
2481 ES'><br>
2482 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>getCenter
2483 (&amp;x, &amp;y, &amp;z); </span></tt></span><span lang=ES
2484 style='mso-ansi-language:ES'><o:p></o:p></span></p>
2485 <p><span lang=EN-US>In these cases it should be left uninitialized rather
2486 than initialized to some phony value. </span></p>
2487 </td>
2488 </tr>
2489 </table>
2490 <p style='margin:0cm;margin-bottom:.0001pt'><span lang=EN-US
2491 style='display:none;mso-hide:all'><o:p>&nbsp;</o:p></span></p>
2492 <table class=TableNormal border=1 cellpadding=0 width="100%"
2493 style='width:100.0%;mso-cellspacing:1.5pt;mso-padding-alt:0cm 5.4pt 0cm 5.4pt'>
2494 <tr style='mso-yfti-irow:0'>
2495 <td style='background:#BBCCEE;padding:.75pt .75pt .75pt .75pt'>
2496 <p class=MsoNormal><b><span lang=EN-US style='font-size:10.0pt;font-family:
2497 Arial'><!--
2498 ****************************************************************************
2499 Rule
2500 ****************************************************************************
2501 -->45. Variables must never have dual meaning. <o:p></o:p></span></b></p>
2502 </td>
2503 </tr>
2504 <tr style='mso-yfti-irow:1'>
2505 <td style='padding:.75pt .75pt .75pt .75pt'>
2506 <p class=MsoNormal><span lang=EN-US style='font-size:10.0pt;font-family:
2507 Arial'><o:p>&nbsp;</o:p></span></p>
2508 </td>
2509 </tr>
2510 <tr style='mso-yfti-irow:2;mso-yfti-lastrow:yes'>
2511 <td style='padding:.75pt .75pt .75pt .75pt'>
2512 <p class=MsoNormal><span lang=EN-US style='font-size:7.5pt;font-family:
2513 Arial'>Enhance readability by ensuring all concepts are represented
2514 uniquely. Reduce chance of error by side effects. <o:p></o:p></span></p>
2515 </td>
2516 </tr>
2517 </table>
2518 <p style='margin:0cm;margin-bottom:.0001pt'><span lang=EN-US
2519 style='display:none;mso-hide:all'><o:p>&nbsp;</o:p></span></p>
2520 <table class=TableNormal border=1 cellpadding=0 width="100%"
2521 style='width:100.0%;mso-cellspacing:1.5pt;mso-padding-alt:0cm 5.4pt 0cm 5.4pt'>
2522 <tr style='mso-yfti-irow:0'>
2523 <td style='background:#BBCCEE;padding:.75pt .75pt .75pt .75pt'>
2524 <p class=MsoNormal><b><span lang=EN-US style='font-size:10.0pt;font-family:
2525 Arial'><!--
2526 ****************************************************************************
2527 Rule
2528 ****************************************************************************
2529 -->46. Use of global variables should be minimized. <o:p></o:p></span></b></p>
2530 </td>
2531 </tr>
2532 <tr style='mso-yfti-irow:1'>
2533 <td style='padding:.75pt .75pt .75pt .75pt'>
2534 <p class=MsoNormal><span lang=EN-US style='font-size:10.0pt;font-family:
2535 Arial'><o:p>&nbsp;</o:p></span></p>
2536 </td>
2537 </tr>
2538 <tr style='mso-yfti-irow:2;mso-yfti-lastrow:yes'>
2539 <td style='padding:.75pt .75pt .75pt .75pt'>
2540 <p class=MsoNormal><span lang=EN-US style='font-size:7.5pt;font-family:
2541 Arial'>In C++ there <span class=GramE>is no reason global variables</span>
2542 need to be used at all. The same is true for global functions or file scope
2543 (static) variables. <o:p></o:p></span></p>
2544 </td>
2545 </tr>
2546 </table>
2547 <p style='margin:0cm;margin-bottom:.0001pt'><span lang=EN-US
2548 style='display:none;mso-hide:all'><o:p>&nbsp;</o:p></span></p>
2549 <table class=TableNormal border=1 cellpadding=0 width="100%"
2550 style='width:100.0%;mso-cellspacing:1.5pt;mso-padding-alt:0cm 5.4pt 0cm 5.4pt'>
2551 <tr style='mso-yfti-irow:0'>
2552 <td style='background:#BBCCEE;padding:.75pt .75pt .75pt .75pt'>
2553 <p class=MsoNormal><b><span lang=EN-US style='font-size:10.0pt;font-family:
2554 Arial'><!--
2555 ****************************************************************************
2556 Rule
2557 ****************************************************************************
2558 -->47. Class variables should never be declared public. <o:p></o:p></span></b></p>
2559 </td>
2560 </tr>
2561 <tr style='mso-yfti-irow:1'>
2562 <td style='padding:.75pt .75pt .75pt .75pt'>
2563 <p class=MsoNormal><span lang=EN-US style='font-size:10.0pt;font-family:
2564 Arial'><o:p>&nbsp;</o:p></span></p>
2565 </td>
2566 </tr>
2567 <tr style='mso-yfti-irow:2;mso-yfti-lastrow:yes'>
2568 <td style='padding:.75pt .75pt .75pt .75pt'>
2569 <p class=MsoNormal><span lang=EN-US style='font-size:7.5pt;font-family:
2570 Arial'>The concept of C++ information hiding and encapsulation is violated
2571 by public variables. Use private variables and access functions instead.
2572 One exception to this rule is when the class is essentially a data
2573 structure, with no behavior (equivalent to a C </span><tt><span lang=EN-US
2574 style='font-size:7.5pt'>struct</span></tt><span lang=EN-US
2575 style='font-size:7.5pt;font-family:Arial'>). In this case it is appropriate
2576 to make the class' instance variables public [2]. <o:p></o:p></span></p>
2577 <p><span lang=EN-US>Note that <i>struct</i>s are kept in C++ for
2578 compatibility with C only, and avoiding them increases the readability of
2579 the code by reducing the number of constructs used. Use a class instead. </span></p>
2580 </td>
2581 </tr>
2582 </table>
2583 <p style='margin:0cm;margin-bottom:.0001pt'><span lang=EN-US
2584 style='display:none;mso-hide:all'><o:p>&nbsp;</o:p></span></p>
2585 <table class=TableNormal border=1 cellpadding=0 width="100%"
2586 style='width:100.0%;mso-cellspacing:1.5pt;mso-padding-alt:0cm 5.4pt 0cm 5.4pt'>
2587 <tr style='mso-yfti-irow:0'>
2588 <td style='background:#BBCCEE;padding:.75pt .75pt .75pt .75pt'>
2589 <p class=MsoNormal><b><span lang=EN-US style='font-size:10.0pt;font-family:
2590 Arial'><!--
2591 ****************************************************************************
2592 Rule
2593 ****************************************************************************
2594 -->48. Related variables of the same type can be declared in a common statement
2595 [3].<br>
2596 Unrelated variables should not be declared in the same statement. <o:p></o:p></span></b></p>
2597 </td>
2598 </tr>
2599 <tr style='mso-yfti-irow:1'>
2600 <td bordercolor="#ECE9D8" style='padding:.75pt .75pt .75pt .75pt'>
2601 <p class=MsoNormal><tt><span lang=EN-US style='font-size:10.0pt'>float&nbsp;
2602 x, y, z;</span></tt><span lang=EN-US style='font-size:10.0pt;font-family:
2603 fixed;mso-bidi-font-family:"Courier New"'><br>
2604 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>float&nbsp;
2605 revenueJanuary, revenueFebruary, revenueMarch; </span></tt></span><span
2606 lang=EN-US style='font-size:10.0pt;font-family:Arial'><o:p></o:p></span></p> </td>
2607 </tr>
2608 <tr style='mso-yfti-irow:2;mso-yfti-lastrow:yes'>
2609 <td style='padding:.75pt .75pt .75pt .75pt'>
2610 <p class=MsoNormal><span lang=EN-US style='font-size:7.5pt;font-family:
2611 Arial'>The common requirement of having declarations on separate lines is
2612 not useful in the situations like the ones above. It enhances readability
2613 to group variables like this. <o:p></o:p></span></p>
2614 </td>
2615 </tr>
2616 </table>
2617 <p style='margin:0cm;margin-bottom:.0001pt'><span lang=EN-US
2618 style='display:none;mso-hide:all'><o:p>&nbsp;</o:p></span></p>
2619 <table class=TableNormal border=1 cellpadding=0 width="100%"
2620 style='width:100.0%;mso-cellspacing:1.5pt;mso-padding-alt:0cm 5.4pt 0cm 5.4pt'>
2621 <tr style='mso-yfti-irow:0'>
2622 <td colspan="2" style='background:#BBCCEE;padding:.75pt .75pt .75pt .75pt'>
2623 <p class=MsoNormal><b><span lang=EN-US style='font-size:10.0pt;font-family:
2624 Arial'><!--
2625 ****************************************************************************
2626 Rule
2627 ****************************************************************************
2628 -->
2629 49. C++ pointers and references should have their reference symbol next<b><span lang=EN-US style='font-size:10.0pt;font-family:
2630 Arial'> to <b><span lang=EN-US style='font-size:10.0pt;font-family:
2631 Arial'>the variable name</span></b></span></b><b><span lang=EN-US style='font-size:10.0pt;font-family:
2632 Arial'><b><span lang=EN-US style='font-size:10.0pt;font-family:
2633 Arial'></span></b></span></b>rather than<b><span lang=EN-US style='font-size:10.0pt;font-family:
2634 Arial'> to <b><span lang=EN-US style='font-size:10.0pt;font-family:
2635 Arial'>the type name</span></b></span></b>[3]. <o:p></o:p></span></b></p> </td>
2636 </tr>
2637 <tr style='mso-yfti-irow:1'>
2638 <td style='padding:.75pt .75pt .75pt .75pt'>
2639 <p class=MsoNormal><tt><span lang=EN-US style='font-size:10.0pt'>float *x;</span></tt><span lang=EN-US style='font-size:10.0pt;
2640 font-family:fixed;mso-bidi-font-family:"Courier New"'><br>
2641 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>int &amp;y;</span></tt></span><span
2642 lang=EN-US style='font-size:10.0pt;font-family:Arial'><o:p></o:p></span></p>
2643 </td>
2644 <td bgcolor="#FDB5A6" style='padding:.75pt .75pt .75pt .75pt'><span class="MsoNormal"><tt><span lang=EN-US style='font-size:10.0pt'>float* x</span></tt><span lang=EN-US style='font-size:10.0pt;
2645 font-family:fixed;mso-bidi-font-family:"Courier New"'><tt>;</tt><br>
2646 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>int&amp; y</span></tt></span><span
2647 lang=EN-US style='font-size:10.0pt;font-family:Arial'><o:p>;</o:p></span></span></td>
2648 </tr>
2649 <tr style='mso-yfti-irow:2;mso-yfti-lastrow:yes'>
2650 <td colspan="2" style='padding:.75pt .75pt .75pt .75pt'>
2651 <p class=MsoNormal><span lang=EN-US style='font-size:7.5pt;font-family:
2652 Arial'>It is debatable whether a pointer is a variable of a pointer type
2653 (float*<span class=GramE>&nbsp; x</span>) or a pointer to a given type
2654 (float&nbsp; *x). Important in the recommendation given though is the fact
2655 that it is impossible to declare more than one pointer in a given statement
2656 using the first approach. I.e. float* x, y, z; is equivalent with float *x;
2657 float y; float z; The same goes for references. <o:p></o:p></span></p>
2658 </td>
2659 </tr>
2660 </table>
2661 <p style='margin:0cm;margin-bottom:.0001pt'><span lang=EN-US
2662 style='display:none;mso-hide:all'><o:p>&nbsp;</o:p></span></p>
2663 <table class=TableNormal border=1 cellpadding=0 width="100%"
2664 style='width:100.0%;mso-cellspacing:1.5pt;mso-padding-alt:0cm 5.4pt 0cm 5.4pt'>
2665 <tr style='mso-yfti-irow:0'>
2666 <td colspan="2" style='background:#BBCCEE;padding:.75pt .75pt .75pt .75pt'>
2667 <p class=MsoNormal><b><span lang=EN-US style='font-size:10.0pt;font-family:
2668 Arial'><!--
2669 ****************************************************************************
2670 Rule
2671 ****************************************************************************
2672 -->50. The </span></b><tt><b><span lang=EN-US style='font-size:10.0pt'>const</span></b></tt><b><span
2673 lang=EN-US style='font-size:10.0pt;font-family:Arial'> keyword should be
2674 listed before the type name. <o:p></o:p></span></b></p>
2675 </td>
2676 </tr>
2677 <tr style='mso-yfti-irow:1'>
2678 <td width="50%" style='padding:.75pt .75pt .75pt .75pt'>
2679 <p class=MsoNormal><tt><span lang=EN-US style='font-size:10.0pt'>void f1
2680 (const Widget *v); </span></tt><span
2681 lang=EN-US style='font-size:10.0pt;font-family:Arial'><o:p></o:p></span></p>
2682 </td>
2683 <td width="50%" bgcolor="#FDB5A6" style='padding:.75pt .75pt .75pt .75pt'><span class="MsoNormal"><tt><span lang=EN-US style='font-size:10.0pt'>void f1 (Widget const *v); </span></tt></span></td>
2684 </tr>
2685 <tr style='mso-yfti-irow:2;mso-yfti-lastrow:yes'>
2686 <td colspan="2" style='padding:.75pt .75pt .75pt .75pt'>
2687 <p class=MsoNormal><span lang=EN-US style='font-size:7.5pt;font-family:
2688 Arial'>Neither is better nor worse, but since the former is more commonly
2689 used that should be the convention. <o:p></o:p></span></p>
2690 </td>
2691 </tr>
2692 </table>
2693 <p style='margin:0cm;margin-bottom:.0001pt'><span lang=EN-US
2694 style='display:none;mso-hide:all'><o:p>&nbsp;</o:p></span></p>
2695 <table class=TableNormal border=1 cellpadding=0 width="100%"
2696 style='width:100.0%;mso-cellspacing:1.5pt;mso-padding-alt:0cm 5.4pt 0cm 5.4pt'>
2697 <tr style='mso-yfti-irow:0'>
2698 <td colspan="2" style='background:#BBCCEE;padding:.75pt .75pt .75pt .75pt'>
2699 <p class=MsoNormal><b><span lang=EN-US style='font-size:10.0pt;font-family:
2700 Arial'><!--
2701 ****************************************************************************
2702 Rule
2703 ****************************************************************************
2704 -->51. Implicit test for <i>0</i> should not be used other than for boolean
2705 variables. <o:p></o:p></span></b></p>
2706 </td>
2707 </tr>
2708 <tr style='mso-yfti-irow:1'>
2709 <td width="51%" style='padding:.75pt .75pt .75pt .75pt'>
2710 <p class=MsoNormal><tt><span lang=EN-US style='font-size:10.0pt'>if (nLines
2711 != 0)</span></tt><span
2712 lang=EN-US style='font-size:10.0pt;font-family:fixed;mso-bidi-font-family:
2713 "Courier New"'><br>
2714 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>if
2715 (value != 0.0)</span></tt></span><span
2716 lang=EN-US style='font-size:10.0pt;font-family:Arial'><o:p></o:p></span></p>
2717 <p class=MsoNormal><span
2718 lang=EN-US style='font-size:10.0pt;font-family:Arial'><o:p></o:p></span></p>
2719 <p class=MsoNormal><span
2720 lang=EN-US style='font-size:10.0pt;font-family:Arial'><o:p><span
2721 lang=EN-US style='font-size:10.0pt;font-family:Arial'><span
2722 lang=EN-US style='font-size:10.0pt;font-family:fixed;mso-bidi-font-family:
2723 "Courier New"'><tt></tt></span></span></o:p></span><span
2724 lang=EN-US style='font-size:10.0pt;font-family:Arial'><o:p><span
2725 lang=EN-US style='font-size:10.0pt;font-family:Arial'><span
2726 lang=EN-US style='font-size:10.0pt;font-family:Arial'><span
2727 lang=EN-US style='font-size:10.0pt;font-family:fixed;mso-bidi-font-family:
2728 "Courier New"'><tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>if (pointer != NULL)</span></tt></span><span
2729 lang=EN-US style='font-size:10.0pt;font-family:Arial'><o:p></o:p><o:p></o:p></span></span></span></o:p></span></p>
2730 <p class=MsoNormal><span
2731 lang=EN-US style='font-size:10.0pt;font-family:Arial'><o:p><span
2732 lang=EN-US style='font-size:10.0pt;font-family:Arial'><o:p><span
2733 lang=EN-US style='font-size:10.0pt;font-family:Arial'><span
2734 lang=EN-US style='font-size:10.0pt;font-family:fixed;mso-bidi-font-family:
2735 "Courier New"'><tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>if (!isBool)</span></tt></span></span></o:p></span><span
2736 lang=EN-US style='font-size:10.0pt;font-family:Arial'><o:p></o:p></span></o:p></span></p></td>
2737 <td width="49%" bgcolor="#FDB5A6" style='padding:.75pt .75pt .75pt .75pt'><span class="MsoNormal"><tt><span lang=EN-US style='font-size:10.0pt'>if (nLines)</span></tt><span
2738 lang=EN-US style='font-size:10.0pt;font-family:fixed;mso-bidi-font-family:
2739 "Courier New"'><br>
2740 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>if (value)</span></tt></span></span><span
2741 lang=EN-US style='font-size:10.0pt;font-family:Arial'><o:p></o:p></span> <p class="MsoNormal"><span
2742 lang=EN-US style='font-size:10.0pt;font-family:Arial'><o:p><span
2743 lang=EN-US style='font-size:10.0pt;font-family:fixed;mso-bidi-font-family:
2744 "Courier New"'><tt></tt></span><span
2745 lang=EN-US style='font-size:10.0pt;font-family:Arial'><o:p></o:p><o:p></o:p></span></o:p></span></p>
2746 <p class="MsoNormal"><span
2747 lang=EN-US style='font-size:10.0pt;font-family:Arial'><o:p><span
2748 lang=EN-US style='font-size:10.0pt;font-family:Arial'><o:p><span
2749 lang=EN-US style='font-size:10.0pt;font-family:Arial'><o:p><span
2750 lang=EN-US style='font-size:10.0pt;font-family:Arial'><span
2751 lang=EN-US style='font-size:10.0pt;font-family:Arial'><span
2752 lang=EN-US style='font-size:10.0pt;font-family:fixed;mso-bidi-font-family:
2753 "Courier New"'><tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>if (!pointer)</span></tt></span></span></span></o:p></span></o:p></span></o:p></span></p>
2754 <p class="MsoNormal"><span
2755 lang=EN-US style='font-size:10.0pt;font-family:Arial'><o:p><span
2756 lang=EN-US style='font-size:10.0pt;font-family:Arial'><o:p><span
2757 lang=EN-US style='font-size:10.0pt;font-family:Arial'><o:p><span
2758 lang=EN-US style='font-size:10.0pt;font-family:Arial'><span
2759 lang=EN-US style='font-size:10.0pt;font-family:Arial'><span
2760 lang=EN-US style='font-size:10.0pt;font-family:fixed;mso-bidi-font-family:
2761 "Courier New"'><tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>if (<span
2762 lang=EN-US style='font-size:10.0pt;font-family:Arial'><span
2763 lang=EN-US style='font-size:10.0pt;font-family:Arial'><span
2764 lang=EN-US style='font-size:10.0pt;font-family:Arial'><span
2765 lang=EN-US style='font-size:10.0pt;font-family:fixed;mso-bidi-font-family:
2766 "Courier New"'><tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>isBool</span></tt></span></span></span></span> != false)</span></tt></span><span
2767 lang=EN-US style='font-size:10.0pt;font-family:Arial'><o:p></o:p><o:p></o:p></span></span></span></o:p></span></o:p></span></o:p></span></p></td>
2768 </tr>
2769 <tr style='mso-yfti-irow:2;mso-yfti-lastrow:yes'>
2770 <td colspan="2" style='padding:.75pt .75pt .75pt .75pt'>
2771 <p class=MsoNormal><span lang=EN-US style='font-size:7.5pt;font-family:
2772 Arial'>It is not necessarily defined by the compiler that ints and floats 0
2773 are implemented as binary 0. Also, by using explicit test the statement
2774 give immediate clue of the type being tested. It is common also to suggest
2775 that pointers shouldn't test implicit for 0 either, i.e. </span><tt><span
2776 lang=EN-US style='font-size:7.5pt'>if (line == 0)</span></tt><span
2777 lang=EN-US style='font-size:7.5pt;font-family:Arial'> instead of </span><tt><span
2778 lang=EN-US style='font-size:7.5pt'>if (line)</span></tt><span lang=EN-US
2779 style='font-size:7.5pt;font-family:Arial'>. The latter is regarded as such
2780 a common practice in C/C++ however that it can be used. <o:p></o:p></span></p>
2781 </td>
2782 </tr>
2783 </table>
2784 <p style='margin:0cm;margin-bottom:.0001pt'><span lang=EN-US
2785 style='display:none;mso-hide:all'><o:p>&nbsp;</o:p></span></p>
2786 <table class=TableNormal border=1 cellpadding=0 width="100%"
2787 style='width:100.0%;mso-cellspacing:1.5pt;mso-padding-alt:0cm 5.4pt 0cm 5.4pt'>
2788 <tr style='mso-yfti-irow:0'>
2789 <td style='background:#BBCCEE;padding:.75pt .75pt .75pt .75pt'>
2790 <p class=MsoNormal><b><span lang=EN-US style='font-size:10.0pt;font-family:
2791 Arial'><!--
2792 ****************************************************************************
2793 Rule
2794 ****************************************************************************
2795 -->52. Variables should be declared in the smallest scope possible. <o:p></o:p></span></b></p>
2796 </td>
2797 </tr>
2798 <tr style='mso-yfti-irow:1'>
2799 <td style='padding:.75pt .75pt .75pt .75pt'>
2800 <p class=MsoNormal><span lang=EN-US style='font-size:10.0pt;font-family:
2801 Arial'><o:p>&nbsp;</o:p></span></p>
2802 </td>
2803 </tr>
2804 <tr style='mso-yfti-irow:2;mso-yfti-lastrow:yes'>
2805 <td style='padding:.75pt .75pt .75pt .75pt'>
2806 <p class=MsoNormal><span lang=EN-US style='font-size:7.5pt;font-family:
2807 Arial'>Keeping the operations on a variable within a small scope, it is
2808 easier to control the effects and side effects of the variable. <o:p></o:p></span></p>
2809 </td>
2810 </tr>
2811 </table>
2812 <h3><a name=Loops></a><span lang=EN-US>5.3 Loops<o:p></o:p></span></h3>
2813 <!--
2814 ****************************************************************************
2815 Rule
2816 ****************************************************************************
2817 -->
2818 <table class=TableNormal border=1 cellpadding=0 width="100%"
2819 style='width:100.0%;mso-cellspacing:1.5pt;mso-padding-alt:0cm 5.4pt 0cm 5.4pt'>
2820 <tr style='mso-yfti-irow:0'>
2821 <td colspan="2" style='background:#BBCCEE;padding:.75pt .75pt .75pt .75pt'>
2822 <p class=MsoNormal><b><span lang=EN-US style='font-size:10.0pt;font-family:
2823 Arial'>53. Only loop control statements must be included in the </span></b><span
2824 class=GramE><tt><b><span lang=EN-US style='font-size:10.0pt'>for(</span></b></tt></span><tt><b><span
2825 lang=EN-US style='font-size:10.0pt'>)</span></b></tt><b><span lang=EN-US
2826 style='font-size:10.0pt;font-family:Arial'> construction. <o:p></o:p></span></b></p>
2827 </td>
2828 </tr>
2829 <tr style='mso-yfti-irow:1'>
2830 <td width="50%" style='padding:.75pt .75pt .75pt .75pt'>
2831 <p class=MsoNormal><tt><span lang=EN-US style='font-size:10.0pt'>sum = 0;</span></tt><span lang=EN-US style='font-size:
2832 10.0pt;font-family:fixed;mso-bidi-font-family:"Courier New"'><br>
2833 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>for
2834 (i = 0; i &lt; 100; i++)</span></tt><br>
2835 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;
2836 sum += value[i]; </span></tt></span><span lang=EN-US style='font-size:10.0pt;
2837 font-family:Arial'><o:p></o:p></span></p>
2838 </td>
2839 <td width="50%" bgcolor="#FDB5A6" style='padding:.75pt .75pt .75pt .75pt'><span class="MsoNormal"><tt><span lang=EN-US style='font-size:10.0pt'>for (i = 0; sum = 0; i &lt; 100; i++)</span></tt><span lang=EN-US style='font-size:
2840 10.0pt;font-family:fixed;mso-bidi-font-family:"Courier New"'><br>
2841 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;sum += value[i]; </span></tt></span><span lang=EN-US style='font-size:10.0pt;
2842 font-family:Arial'><o:p></o:p></span></span></td>
2843 </tr>
2844 <tr style='mso-yfti-irow:2;mso-yfti-lastrow:yes'>
2845 <td colspan="2" style='padding:.75pt .75pt .75pt .75pt'>
2846 <p class=MsoNormal><span lang=EN-US style='font-size:7.5pt;font-family:
2847 Arial'>Increase maintainability and readability. Make it crystal clear what
2848 controls the loop and what the loop contains. <o:p></o:p></span></p>
2849 </td>
2850 </tr>
2851 </table>
2852 <p style='margin:0cm;margin-bottom:.0001pt'><span lang=EN-US
2853 style='display:none;mso-hide:all'><o:p>&nbsp;</o:p></span></p>
2854 <table class=TableNormal border=1 cellpadding=0 width="100%"
2855 style='width:100.0%;mso-cellspacing:1.5pt;mso-padding-alt:0cm 5.4pt 0cm 5.4pt'>
2856 <tr style='mso-yfti-irow:0'>
2857 <td colspan="2" style='background:#BBCCEE;padding:.75pt .75pt .75pt .75pt'>
2858 <p class=MsoNormal><b><span lang=EN-US style='font-size:10.0pt;font-family:
2859 Arial'><!--
2860 ****************************************************************************
2861 Rule
2862 ****************************************************************************
2863 -->54. </span></b><st1:place><b><span lang=EN-US style='font-size:10.0pt;
2864 font-family:Arial'>Loop</span></b></st1:place><b><span lang=EN-US
2865 style='font-size:10.0pt;font-family:Arial'> variables should be initialized
2866 immediately before the loop. <o:p></o:p></span></b></p>
2867 </td>
2868 </tr>
2869 <tr style='mso-yfti-irow:1'>
2870 <td width="50%" style='padding:.75pt .75pt .75pt .75pt'>
2871 <p class=MsoNormal><tt><span lang=EN-US style='font-size:10.0pt'>isDone =
2872 false; </span></tt><span
2873 lang=EN-US style='font-size:10.0pt;font-family:fixed;mso-bidi-font-family:
2874 "Courier New"'><br>
2875 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>while
2876 (!isDone) {</span></tt><br>
2877 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>&nbsp;
2878 : &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span></tt><br>
2879 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>} </span></tt></span><span lang=EN-US
2880 style='font-size:10.0pt;font-family:Arial'><o:p></o:p></span></p>
2881 </td>
2882 <td width="50%" bgcolor="#FDB5A6" style='padding:.75pt .75pt .75pt .75pt'><span class="MsoNormal"><tt><span lang=EN-US style='font-size:10.0pt'>bool isDone = false;</span></tt><span
2883 lang=EN-US style='font-size:10.0pt;font-family:fixed;mso-bidi-font-family:
2884 "Courier New"'><br>
2885 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>:</span></tt><br>
2886 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>while (!isDone) {</span></tt><br>
2887 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>:</span></tt><br>
2888 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>} </span></tt></span><span lang=EN-US
2889 style='font-size:10.0pt;font-family:Arial'><o:p></o:p></span></span></td>
2890 </tr>
2891 <tr style='mso-yfti-irow:2;mso-yfti-lastrow:yes'>
2892 <td colspan="2" style='padding:.75pt .75pt .75pt .75pt'>
2893 <p class=MsoNormal><span lang=EN-US style='font-size:10.0pt;font-family:
2894 Arial'><o:p>&nbsp;</o:p></span></p>
2895 </td>
2896 </tr>
2897 </table>
2898 <p style='margin:0cm;margin-bottom:.0001pt'><!--
2899 ****************************************************************************
2900 Rule
2901 ****************************************************************************
2902 --><span lang=EN-US style='display:none;mso-hide:all'><o:p>&nbsp;</o:p></span></p>
2903 <table class=TableNormal border=1 cellpadding=0 width="100%"
2904 style='width:100.0%;mso-cellspacing:1.5pt;mso-padding-alt:0cm 5.4pt 0cm 5.4pt'>
2905 <tr style='mso-yfti-irow:0'>
2906 <td style='background:#BBCCEE;padding:.75pt .75pt .75pt .75pt'>
2907 <p class=MsoNormal><b><span lang=EN-US style='font-size:10.0pt;font-family:
2908 Arial'>55. </span></b><span class=GramE><tt><b><span lang=EN-US
2909 style='font-size:10.0pt'>do-</span></b></tt></span><tt><b><span lang=EN-US
2910 style='font-size:10.0pt'>while</span></b></tt><b><span lang=EN-US
2911 style='font-size:10.0pt;font-family:Arial'> loops can be avoided. <o:p></o:p></span></b></p>
2912 </td>
2913 </tr>
2914 <tr style='mso-yfti-irow:1'>
2915 <td style='padding:.75pt .75pt .75pt .75pt'>
2916 <p class=MsoNormal><span lang=EN-US style='font-size:10.0pt;font-family:
2917 Arial'><o:p>&nbsp;</o:p></span></p>
2918 </td>
2919 </tr>
2920 <tr style='mso-yfti-irow:2;mso-yfti-lastrow:yes'>
2921 <td style='padding:.75pt .75pt .75pt .75pt'>
2922 <p class=MsoNormal><span class=GramE><tt><span lang=EN-US style='font-size:
2923 7.5pt'>do-</span></tt></span><tt><span lang=EN-US style='font-size:7.5pt'>while</span></tt><span
2924 lang=EN-US style='font-size:7.5pt;font-family:Arial'> loops are less
2925 readable than ordinary </span><tt><span lang=EN-US style='font-size:7.5pt'>while</span></tt><span
2926 lang=EN-US style='font-size:7.5pt;font-family:Arial'> loops and </span><tt><span
2927 lang=EN-US style='font-size:7.5pt'>for</span></tt><span lang=EN-US
2928 style='font-size:7.5pt;font-family:Arial'> loops since the conditional is
2929 at the bottom of the loop. The reader must scan the entire loop in order to
2930 understand the scope of the loop. <o:p></o:p></span></p>
2931 <p><span lang=EN-US>In addition, </span><tt><span lang=EN-US
2932 style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>do-while</span></tt><span
2933 lang=EN-US> loops are not needed. Any </span><tt><span lang=EN-US
2934 style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>do-while</span></tt><span
2935 lang=EN-US> loop can easily be rewritten into a </span><tt><span
2936 lang=EN-US style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>while</span></tt><span
2937 lang=EN-US> loop or <span class=GramE>a <tt><span style='mso-ansi-font-size:
2938 10.0pt;mso-bidi-font-size:10.0pt'>for</span></tt></span> loop. Reducing the
2939 number of constructs used enhance readbility. </span></p>
2940 </td>
2941 </tr>
2942 </table>
2943 <p style='margin:0cm;margin-bottom:.0001pt'><span lang=EN-US
2944 style='display:none;mso-hide:all'><o:p>&nbsp;</o:p></span></p>
2945 <table class=TableNormal border=1 cellpadding=0 width="100%"
2946 style='width:100.0%;mso-cellspacing:1.5pt;mso-padding-alt:0cm 5.4pt 0cm 5.4pt'>
2947 <tr style='mso-yfti-irow:0'>
2948 <td style='background:#BBCCEE;padding:.75pt .75pt .75pt .75pt'>
2949 <p class=MsoNormal><b><span lang=EN-US style='font-size:10.0pt;font-family:
2950 Arial'><!--
2951 ****************************************************************************
2952 Rule
2953 ****************************************************************************
2954 -->56. The use of </span></b><tt><b><span lang=EN-US style='font-size:10.0pt'>break</span></b></tt><b><span
2955 lang=EN-US style='font-size:10.0pt;font-family:Arial'> and </span></b><tt><b><span
2956 lang=EN-US style='font-size:10.0pt'>continue</span></b></tt><b><span
2957 lang=EN-US style='font-size:10.0pt;font-family:Arial'> in loops should be
2958 avoided. <o:p></o:p></span></b></p>
2959 </td>
2960 </tr>
2961 <tr style='mso-yfti-irow:1'>
2962 <td style='padding:.75pt .75pt .75pt .75pt'>
2963 <p class=MsoNormal><span lang=EN-US style='font-size:10.0pt;font-family:
2964 Arial'><o:p>&nbsp;</o:p></span></p>
2965 </td>
2966 </tr>
2967 <tr style='mso-yfti-irow:2;mso-yfti-lastrow:yes'>
2968 <td style='padding:.75pt .75pt .75pt .75pt'>
2969 <p class=MsoNormal><span lang=EN-US style='font-size:7.5pt;font-family:
2970 Arial'>These constructs can be compared to goto and they should only be
2971 used if they prove to have higher readability than their structured
2972 counterpart. <o:p></o:p></span></p>
2973 </td>
2974 </tr>
2975 </table>
2976 <p style='margin:0cm;margin-bottom:.0001pt'><span lang=EN-US
2977 style='display:none;mso-hide:all'><o:p>&nbsp;</o:p></span></p>
2978 <table class=TableNormal border=1 cellpadding=0 width="100%"
2979 style='width:100.0%;mso-cellspacing:1.5pt;mso-padding-alt:0cm 5.4pt 0cm 5.4pt'>
2980 <tr style='mso-yfti-irow:0'>
2981 <td colspan="2" style='background:#BBCCEE;padding:.75pt .75pt .75pt .75pt'>
2982 <p class=MsoNormal><b><span lang=EN-US style='font-size:10.0pt;font-family:
2983 Arial'><!--
2984 ****************************************************************************
2985 Rule
2986 ****************************************************************************
2987 -->57. The form </span></b><span class=GramE><tt><b><span lang=EN-US
2988 style='font-size:10.0pt'>while(</span></b></tt></span><tt><b><span
2989 lang=EN-US style='font-size:10.0pt'>true)</span></b></tt><b><span
2990 lang=EN-US style='font-size:10.0pt;font-family:Arial'> should be used for
2991 infinite loops. <o:p></o:p></span></b></p>
2992 </td>
2993 </tr>
2994 <tr style='mso-yfti-irow:1'>
2995 <td width="50%" style='padding:.75pt .75pt .75pt .75pt'>
2996 <p class=MsoNormal><span class=GramE><tt><span lang=EN-US style='font-size:
2997 10.0pt'>while</span></tt></span><tt><span lang=EN-US style='font-size:10.0pt'>
2998 (true) {</span></tt><span lang=EN-US style='font-size:10.0pt;font-family:
2999 fixed;mso-bidi-font-family:"Courier New"'><br>
3000 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>&nbsp;
3001 : </span></tt><br>
3002 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>}</span></tt><br>
3003 </span><span
3004 lang=EN-US style='font-size:10.0pt;font-family:Arial'><o:p></o:p></span></p>
3005 </td>
3006 <td width="50%" bgcolor="#FDB5A6" style='padding:.75pt .75pt .75pt .75pt'><span class="MsoNormal"><span lang=EN-US style='font-size:10.0pt;font-family:
3007 fixed;mso-bidi-font-family:"Courier New"'><br>
3008 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>for (;;) <span class=GramE>{ /</span>/ NO!</span></tt><br>
3009 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>&nbsp;:</span></tt><br>
3010 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>}</span></tt><br>
3011 <br>
3012 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>while (1) { // NO!</span></tt><br>
3013 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>&nbsp;:</span></tt><br>
3014 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>}</span></tt></span><span
3015 lang=EN-US style='font-size:10.0pt;font-family:Arial'><o:p></o:p></span></span></td>
3016 </tr>
3017 <tr style='mso-yfti-irow:2;mso-yfti-lastrow:yes'>
3018 <td colspan="2" style='padding:.75pt .75pt .75pt .75pt'>
3019 <p class=MsoNormal><span lang=EN-US style='font-size:7.5pt;font-family:
3020 Arial'>Testing against 1 is neither necessary nor meaningful. The form </span><tt><span
3021 lang=EN-US style='font-size:7.5pt'>for (;;)</span></tt><span lang=EN-US
3022 style='font-size:7.5pt;font-family:Arial'> is not very readable, and it is
3023 not apparent that this actually is an infinite loop. <o:p></o:p></span></p>
3024 </td>
3025 </tr>
3026 </table>
3027 <h3><a name=Conditionals></a><span lang=EN-US>5.4 Conditionals<o:p></o:p></span></h3>
3028 <!--
3029 ****************************************************************************
3030 Rule
3031 ****************************************************************************
3032 -->
3033 <p style='margin:0cm;margin-bottom:.0001pt'><span lang=EN-US
3034 style='display:none;mso-hide:all'><o:p>&nbsp;</o:p></span></p>
3035 <table class=TableNormal border=1 cellpadding=0 width="100%"
3036 style='width:100.0%;mso-cellspacing:1.5pt;mso-padding-alt:0cm 5.4pt 0cm 5.4pt'>
3037 <tr style='mso-yfti-irow:0'>
3038 <td style='background:#BBCCEE;padding:.75pt .75pt .75pt .75pt'>
3039 <p class=MsoNormal><b><span lang=EN-US style='font-size:10.0pt;font-family:
3040 Arial'><!--
3041 ****************************************************************************
3042 Rule
3043 ****************************************************************************
3044 -->58. The nominal case should be put in the <i>if</i>-part and the exception
3045 in the <i>else</i>-part of <span class=GramE>an if</span> statement [1]. <o:p></o:p></span></b></p>
3046 </td>
3047 </tr>
3048 <tr style='mso-yfti-irow:1'>
3049 <td style='padding:.75pt .75pt .75pt .75pt'>
3050 <p class=MsoNormal><tt><span lang=EN-US style='font-size:10.0pt'>isError =
3051 readFile (fileName);</span></tt><span lang=EN-US style='font-size:10.0pt;
3052 font-family:fixed;mso-bidi-font-family:"Courier New"'><br>
3053 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>if
3054 (!isError) {</span></tt><br>
3055 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>&nbsp;
3056 :</span></tt><br>
3057 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>} else
3058 {</span></tt><br>
3059 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>&nbsp;
3060 :</span></tt><br>
3061 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>} </span></tt></span><span
3062 lang=EN-US style='font-size:10.0pt;font-family:Arial'><o:p></o:p></span></p>
3063 </td>
3064 </tr>
3065 <tr style='mso-yfti-irow:2;mso-yfti-lastrow:yes'>
3066 <td style='padding:.75pt .75pt .75pt .75pt'>
3067 <p class=MsoNormal><span lang=EN-US style='font-size:7.5pt;font-family:
3068 Arial'>Makes sure that the exceptions don't obscure the normal path of
3069 execution. This is important for both the readability and performance. <o:p></o:p></span></p>
3070 </td>
3071 </tr>
3072 </table>
3073 <p style='margin:0cm;margin-bottom:.0001pt'><span lang=EN-US
3074 style='display:none;mso-hide:all'><o:p>&nbsp;</o:p></span></p>
3075 <table class=TableNormal border=1 cellpadding=0 width="100%"
3076 style='width:100.0%;mso-cellspacing:1.5pt;mso-padding-alt:0cm 5.4pt 0cm 5.4pt'>
3077 <tr style='mso-yfti-irow:0'>
3078 <td colspan="2" style='background:#BBCCEE;padding:.75pt .75pt .75pt .75pt'>
3079 <p class=MsoNormal><b><span lang=EN-US style='font-size:10.0pt;font-family:
3080 Arial'><!--
3081 ****************************************************************************
3082 Rule
3083 ****************************************************************************
3084 -->59. The conditional should be put on a separate line. <o:p></o:p></span></b></p>
3085 </td>
3086 </tr>
3087 <tr style='mso-yfti-irow:1'>
3088 <td width="50%" style='padding:.75pt .75pt .75pt .75pt'>
3089 <p class=MsoNormal><tt><span lang=EN-US style='font-size:10.0pt'>if
3090 (isDone)&nbsp;</span></tt><span lang=EN-US
3091 style='font-size:10.0pt;font-family:fixed;mso-bidi-font-family:"Courier New"'><br>
3092 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>&nbsp;
3093 doCleanup(); </span></tt></span><span lang=EN-US style='font-size:10.0pt;
3094 font-family:Arial'><o:p></o:p></span></p>
3095 </td>
3096 <td width="50%" bgcolor="#FDB5A6" style='padding:.75pt .75pt .75pt .75pt'><span class="MsoNormal"><tt><span lang=EN-US style='font-size:10.0pt'> if (isDone) doCleanup();</span></tt><span lang=EN-US
3097 style='font-size:10.0pt;font-family:fixed;mso-bidi-font-family:"Courier New"'></span></span></td>
3098 </tr>
3099 <tr style='mso-yfti-irow:2;mso-yfti-lastrow:yes'>
3100 <td colspan="2" style='padding:.75pt .75pt .75pt .75pt'>
3101 <p class=MsoNormal><span lang=EN-US style='font-size:7.5pt;font-family:
3102 Arial'>This is for debugging purposes. When writing on a single line, it is
3103 not apparent whether the test is really true or not. <o:p></o:p></span></p>
3104 </td>
3105 </tr>
3106 </table>
3107 <p style='margin:0cm;margin-bottom:.0001pt'><span lang=EN-US
3108 style='display:none;mso-hide:all'><o:p>&nbsp;</o:p></span></p>
3109 <table class=TableNormal border=1 cellpadding=0 width="100%"
3110 style='width:100.0%;mso-cellspacing:1.5pt;mso-padding-alt:0cm 5.4pt 0cm 5.4pt'>
3111 <tr style='mso-yfti-irow:0'>
3112 <td colspan="2" style='background:#BBCCEE;padding:.75pt .75pt .75pt .75pt'>
3113 <p class=MsoNormal><b><span lang=EN-US style='font-size:10.0pt;font-family:
3114 Arial'><!--
3115 ****************************************************************************
3116 Rule
3117 ****************************************************************************
3118 -->60. Executable statements in conditionals must be avoided. <o:p></o:p></span></b></p>
3119 </td>
3120 </tr>
3121 <tr style='mso-yfti-irow:1'>
3122 <td width="50%" style='padding:.75pt .75pt .75pt .75pt'>
3123 <p class=MsoNormal><span
3124 lang=EN-US style='font-size:10.0pt;font-family:fixed;mso-bidi-font-family:
3125 "Courier New"'><tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>fileHandle
3126 = open (fileName, &quot;w&quot;);</span></tt><br>
3127 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>if
3128 (!fileHandle) {</span></tt><br>
3129 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>&nbsp;
3130 :</span></tt><br>
3131 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>}</span></tt></span><span
3132 lang=EN-US style='font-size:10.0pt;font-family:Arial'><o:p></o:p></span></p>
3133 </td>
3134 <td width="50%" bgcolor="#FDB5A6" style='padding:.75pt .75pt .75pt .75pt'><span class="MsoNormal"><span
3135 lang=EN-US style='font-size:10.0pt;font-family:fixed;mso-bidi-font-family:
3136 "Courier New"'><span class=GramE><tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:
3137 10.0pt'>if</span></tt></span><tt><span style='mso-ansi-font-size:10.0pt;
3138 mso-bidi-font-size:10.0pt'> (!(fileHandle = open (fileName, &quot;w&quot;))) { </span></tt><br>
3139 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>&nbsp;: </span></tt><br>
3140 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>} </span></tt></span></span></td>
3141 </tr>
3142 <tr style='mso-yfti-irow:2;mso-yfti-lastrow:yes'>
3143 <td colspan="2" style='padding:.75pt .75pt .75pt .75pt'>
3144 <p class=MsoNormal><span lang=EN-US style='font-size:7.5pt;font-family:
3145 Arial'>Conditionals with executable statements are just very difficult to
3146 read. This is especially true for programmers new to C/C++. <o:p></o:p></span></p>
3147 </td>
3148 </tr>
3149 </table>
3150 <p style='margin:0cm;margin-bottom:.0001pt'><span lang=EN-US
3151 style='display:none;mso-hide:all'><o:p>&nbsp;</o:p></span></p>
3152 <p style='margin:0cm'>&nbsp;</p>
3153 <p style='margin:0cm'><span lang=EN-US
3154 style='display:none;mso-hide:all'><o:p>&nbsp;</o:p></span></p>
3155 <h3 style='margin:0cm'><a name=Template id="Template"></a><span lang=EN-US>5.5 Template </span></h3>
3156 <p style='margin:0cm'><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
3157 <!--
3158 ****************************************************************************
3159 Rule
3160 ****************************************************************************
3161 --> <p style='margin:0cm;margin-bottom:.0001pt'><span lang=EN-US
3162 style='display:none;mso-hide:all'><o:p>&nbsp;</o:p></span></p>
3163 <table class=TableNormal border=1 cellpadding=0 width="100%"
3164 style='width:100.0%;mso-cellspacing:1.5pt;mso-padding-alt:0cm 5.4pt 0cm 5.4pt'>
3165 <tr style='mso-yfti-irow:0'>
3166 <td colspan="2" style='background:#BBCCEE;padding:.75pt .75pt .75pt .75pt'>
3167 <p class=MsoNormal><b><span lang=EN-US style='font-size:10.0pt;font-family:
3168 Arial'>61. </span></b><span lang=EN-US style='font-size:10.0pt;font-family:
3169 Arial'><em>typename</em></span><b><span lang=EN-US style='font-size:10.0pt;font-family:
3170 Arial'> instead of </span></b><span lang=EN-US style='font-size:10.0pt;font-family:
3171 Arial'><em>class</em></span><b><span lang=EN-US style='font-size:10.0pt;font-family:
3172 Arial'> should be used in template <o:p>declaration</o:p></span></b></p></td>
3173 </tr>
3174 <tr style='mso-yfti-irow:1'>
3175 <td width="50%" style='padding:.75pt .75pt .75pt .75pt'>
3176 <p class=MsoNormal><span lang=EN-US style='font-size:10.0pt;font-family:
3177 Arial'><o:p></o:p></span><span lang=EN-US style='font-size:10.0pt;font-family:
3178 Arial'><o:p><span
3179 lang=EN-US style='font-size:10.0pt;font-family:fixed;mso-bidi-font-family:
3180 "Courier New"'>template &lt;typename T&gt;</span></o:p></span></p>
3181 <p class=MsoNormal><span lang=EN-US style='font-size:10.0pt;font-family:
3182 Arial'><o:p><span
3183 lang=EN-US style='font-size:10.0pt;font-family:fixed;mso-bidi-font-family:
3184 "Courier New"'>inline const T&amp; max (const T &amp;a, const T &amp;b);<br>
3185 </span><span
3186 lang=EN-US style='font-size:10.0pt;font-family:Arial'><o:p></o:p></span></o:p></span></p></td>
3187 <td width="50%" bgcolor="#FDB5A6" style='padding:.75pt .75pt .75pt .75pt'><p class="MsoNormal"><span lang=EN-US style='font-size:10.0pt;font-family:
3188 Arial'><span
3189 lang=EN-US style='font-size:10.0pt;font-family:fixed;mso-bidi-font-family:
3190 "Courier New"'>template &lt;class T&gt;</span></span></p>
3191 <p class="MsoNormal"><span lang=EN-US style='font-size:10.0pt;font-family:
3192 Arial'><span
3193 lang=EN-US style='font-size:10.0pt;font-family:fixed;mso-bidi-font-family:
3194 "Courier New"'>inline const T&amp; max (const T &amp;a, const T &amp;b);</span></span></p></td>
3195 </tr>
3196 <tr style='mso-yfti-irow:2;mso-yfti-lastrow:yes'>
3197 <td colspan="2" style='padding:.75pt .75pt .75pt .75pt'>
3198 <p class=MsoNormal><span lang=EN-US style='font-size:7.5pt;font-family:
3199 Arial'>Semantically there is no difference in this context. So, even if you use class here, any type may be used for template arguments. However, because this use of class can be misleading (not only class types can be substituted for T ). Thus, we prefer the use of typename in this context.<o:p></o:p></span></p>
3200 <p class=MsoNormal><span lang=EN-US style='font-size:7.5pt;font-family:
3201 Arial'><o:p></o:p></span></p>
3202 <p class=MsoNormal><span lang=EN-US style='font-size:10.0pt;font-family:
3203 Arial'><o:p><span class="style4"> template &lt;typename T, template&lt;T*&gt; class Buf&gt;</span></o:p></span></p>
3204 <p class=MsoNormal><span lang=EN-US style='font-size:7.5pt;font-family:
3205 Arial'><o:p></o:p></span><span lang=EN-US style='font-size:7.5pt'><o:p><span class="style10"> class Structure; </span></o:p></span><span lang=EN-US style='font-size:7.5pt;font-family:
3206 Arial'><o:p></o:p></span></p>
3207 <p class=MsoNormal><span lang=EN-US style='font-size:7.5pt;font-family:
3208 Arial'><o:p><span class="style10">If template declaration involves template template parameter, use class instead<span class="style13">.</span></span></o:p></span></p></td>
3209 </tr>
3210 </table>
3211 <!--
3212 ****************************************************************************
3213 Rule
3214 ****************************************************************************
3215 -->
3216 <p style='margin:0cm;margin-bottom:.0001pt'><span lang=EN-US
3217 style='display:none;mso-hide:all'><o:p>&nbsp;</o:p></span></p>
3218 <table class=TableNormal border=1 cellpadding=0 width="100%"
3219 style='width:100.0%;mso-cellspacing:1.5pt;mso-padding-alt:0cm 5.4pt 0cm 5.4pt'>
3220 <tr style='mso-yfti-irow:0'>
3221 <td colspan="2" style='background:#BBCCEE;padding:.75pt .75pt .75pt .75pt'>
3222 <p class=MsoNormal><b><span lang=EN-US style='font-size:10.0pt;font-family:
3223 Arial'>62. template keyword and its parameter must occ<o:p>upy at least one line </o:p></span></b></p></td>
3224 </tr>
3225 <tr style='mso-yfti-irow:1'>
3226 <td width="50%" style='padding:.75pt .75pt .75pt .75pt'>
3227 <p class=MsoNormal><span lang=EN-US style='font-size:10.0pt;font-family:
3228 Arial'><o:p><span class="style4"> template&lt;typename T&gt;</span></o:p></span></p>
3229 <p class=MsoNormal><span lang=EN-US style='font-size:10.0pt;font-family:
3230 Arial'><o:p><span class="style4">somefunc(T);</span></o:p></span></p></td>
3231 <td width="50%" bgcolor="#FDB5A6" style='padding:.75pt .75pt .75pt .75pt'><p class=MsoNormal><span lang=EN-US style='font-size:10.0pt;font-family:
3232 Arial'><o:p><span class="style4">template&lt;typename T&gt;</span></o:p> </span><span lang=EN-US style='font-size:10.0pt;font-family:
3233 Arial'><o:p><span class="style4">somefunc(T);</span></o:p></span></p> </td>
3234 </tr>
3235 <tr style='mso-yfti-irow:2;mso-yfti-lastrow:yes'>
3236 <td colspan="2" style='padding:.75pt .75pt .75pt .75pt'>
3237 <p class=MsoNormal><span lang=EN-US style='font-size:7.5pt;font-family:
3238 Arial'><o:p></o:p></span></p></td>
3239 </tr>
3240 </table>
3241 <p style='margin:0cm;margin-bottom:.0001pt'><span lang=EN-US
3242 style='display:none;mso-hide:all'><o:p>&nbsp;</o:p></span></p>
3243 <p style='margin:0cm'>&nbsp;</p>
3244 <p style='margin:0cm'><span lang=EN-US
3245 style='display:none;mso-hide:all'><o:p>&nbsp;</o:p></span></p>
3246 <h3 style='margin:0cm'><a name=Misc></a><span lang=EN-US>5.6 Miscellaneous<o:p></o:p></span></h3> <!--
3247 ****************************************************************************
3248 Rule
3249 ****************************************************************************
3250 -->
3251 <p style='margin:0cm;margin-bottom:.0001pt'>&nbsp;</p>
3252 <p style='margin:0cm;margin-bottom:.0001pt'><span lang=EN-US
3253 style='display:none;mso-hide:all'><o:p>&nbsp;</o:p></span></p>
3254 <p style='margin:0cm;margin-bottom:.0001pt'><span lang=EN-US
3255 style='display:none;mso-hide:all'><o:p>&nbsp;</o:p></span></p>
3256 <table class=TableNormal border=1 cellpadding=0 width="100%"
3257 style='width:100.0%;mso-cellspacing:1.5pt;mso-padding-alt:0cm 5.4pt 0cm 5.4pt'>
3258 <tr style='mso-yfti-irow:0'>
3259 <td style='background:#BBCCEE;padding:.75pt .75pt .75pt .75pt'>
3260 <p class=MsoNormal><b><span lang=EN-US style='font-size:10.0pt;font-family:
3261 Arial'>63. The use of magic numbers in the code should be avoided. Numbers other than <i>0 </i>and <i>1 </i>should be considered declared as named constants instead. <o:p></o:p></span></b></p></td>
3262 </tr>
3263 <tr style='mso-yfti-irow:1'>
3264 <td style='padding:.75pt .75pt .75pt .75pt'>
3265 <p class=MsoNormal><span lang=EN-US style='font-size:10.0pt;font-family:
3266 Arial'><o:p>&nbsp;</o:p></span></p></td>
3267 </tr>
3268 <tr style='mso-yfti-irow:2;mso-yfti-lastrow:yes'>
3269 <td style='padding:.75pt .75pt .75pt .75pt'>
3270 <p class=MsoNormal><span lang=EN-US style='font-size:7.5pt;font-family:
3271 Arial'>If the number does not have an obvious meaning by itself, the readability is enhanced by introducing a named constant instead. A different approach is to introduce a method from which the constant can be accessed. <o:p></o:p></span></p></td>
3272 </tr>
3273 </table> <p style='margin:0cm;margin-bottom:.0001pt'><span lang=EN-US
3274 style='display:none;mso-hide:all'><o:p>&nbsp;</o:p></span></p>
3275 <table class=TableNormal border=1 cellpadding=0 width="100%"
3276 style='width:100.0%;mso-cellspacing:1.5pt;mso-padding-alt:0cm 5.4pt 0cm 5.4pt'>
3277 <tr style='mso-yfti-irow:0'>
3278 <td style='background:#BBCCEE;padding:.75pt .75pt .75pt .75pt'>
3279 <p class=MsoNormal><b><span lang=EN-US style='font-size:10.0pt;font-family:
3280 Arial'>64. Floating point constants should always be written with decimal
3281 point and at least one decimal. <o:p></o:p></span></b></p>
3282 </td>
3283 </tr>
3284 <tr style='mso-yfti-irow:1'>
3285 <td style='padding:.75pt .75pt .75pt .75pt'>
3286 <p class=MsoNormal><tt><span lang=EN-US style='font-size:10.0pt'>double
3287 total = 0.0; &nbsp; // NOT: double total = 0; </span></tt><span lang=EN-US
3288 style='font-size:10.0pt;font-family:fixed;mso-bidi-font-family:"Courier New"'><br>
3289 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>double
3290 speed = 3.0e8; // NOT: double speed = 3e8;</span></tt><br>
3291 <br>
3292 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>double
3293 sum;</span></tt><br>
3294 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>:</span></tt><br>
3295 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>sum =
3296 (a + b) * 10.0; </span></tt></span><span lang=EN-US style='font-size:10.0pt;
3297 font-family:Arial'><o:p></o:p></span></p>
3298 </td>
3299 </tr>
3300 <tr style='mso-yfti-irow:2;mso-yfti-lastrow:yes'>
3301 <td style='padding:.75pt .75pt .75pt .75pt'>
3302 <p class=MsoNormal><span lang=EN-US style='font-size:7.5pt;font-family:
3303 Arial'>This empasize the different nature of integer and floating point
3304 numbers even if their values might happen to be the same in a specific case.
3305 <o:p></o:p></span></p>
3306 <p><span lang=EN-US>Also, as in the last example above, it <span
3307 class=GramE>emphasize</span> the type of the assigned variable (</span><tt><span
3308 lang=EN-US style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>sum</span></tt><span
3309 lang=EN-US>) at a point in the code where this might not be evident. </span></p>
3310 </td>
3311 </tr>
3312 </table>
3313 <p style='margin:0cm;margin-bottom:.0001pt'><span lang=EN-US
3314 style='display:none;mso-hide:all'><o:p>&nbsp;</o:p></span></p>
3315 <table class=TableNormal border=1 cellpadding=0 width="100%"
3316 style='width:100.0%;mso-cellspacing:1.5pt;mso-padding-alt:0cm 5.4pt 0cm 5.4pt'>
3317 <tr style='mso-yfti-irow:0'>
3318 <td style='background:#BBCCEE;padding:.75pt .75pt .75pt .75pt'>
3319 <p class=MsoNormal><b><span lang=EN-US style='font-size:10.0pt;font-family:
3320 Arial'><!--
3321 ****************************************************************************
3322 Rule
3323 ****************************************************************************
3324 -->65. Floating point constants should always be written with a digit before
3325 the decimal point. <o:p></o:p></span></b></p>
3326 </td>
3327 </tr>
3328 <tr style='mso-yfti-irow:1'>
3329 <td style='padding:.75pt .75pt .75pt .75pt'>
3330 <p class=MsoNormal><tt><span lang=EN-US style='font-size:10.0pt'>double
3331 total = 0.5; &nbsp; // NOT: double total = .5; </span></tt><span
3332 lang=EN-US style='font-size:10.0pt;font-family:Arial'><o:p></o:p></span></p>
3333 </td>
3334 </tr>
3335 <tr style='mso-yfti-irow:2;mso-yfti-lastrow:yes'>
3336 <td style='padding:.75pt .75pt .75pt .75pt'>
3337 <p class=MsoNormal><span lang=EN-US style='font-size:7.5pt;font-family:
3338 Arial'>The number and expression system in C++ is borrowed from mathematics
3339 and one should adhere to mathematical conventions for syntax wherever
3340 possible. Also, 0.5 is a lot more readable than .5; There is no way it can
3341 be mixed with the integer 5. <o:p></o:p></span></p>
3342 </td>
3343 </tr>
3344 </table>
3345 <p style='margin:0cm;margin-bottom:.0001pt'><span lang=EN-US
3346 style='display:none;mso-hide:all'><o:p>&nbsp;</o:p></span></p>
3347 <table class=TableNormal border=1 cellpadding=0 width="100%"
3348 style='width:100.0%;mso-cellspacing:1.5pt;mso-padding-alt:0cm 5.4pt 0cm 5.4pt'>
3349 <tr style='mso-yfti-irow:0'>
3350 <td style='background:#BBCCEE;padding:.75pt .75pt .75pt .75pt'>
3351 <p class=MsoNormal><b><span lang=EN-US style='font-size:10.0pt;font-family:
3352 Arial'><!--
3353 ****************************************************************************
3354 Rule
3355 ****************************************************************************
3356 -->66. Functions must always have the return value explicitly listed. <o:p></o:p></span></b></p>
3357 </td>
3358 </tr>
3359 <tr style='mso-yfti-irow:1'>
3360 <td style='padding:.75pt .75pt .75pt .75pt'>
3361 <p class=MsoNormal><tt><span lang=EN-US style='font-size:10.0pt'>int
3362 getValue() {&nbsp; &nbsp; // NOT: getValue()</span></tt><span lang=EN-US
3363 style='font-size:10.0pt;font-family:fixed;mso-bidi-font-family:"Courier New"'><br>
3364 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>&nbsp;
3365 :</span></tt><br>
3366 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>}</span></tt></span><span
3367 lang=EN-US style='font-size:10.0pt;font-family:Arial'><o:p></o:p></span></p>
3368 </td>
3369 </tr>
3370 <tr style='mso-yfti-irow:2;mso-yfti-lastrow:yes'>
3371 <td style='padding:.75pt .75pt .75pt .75pt'>
3372 <p class=MsoNormal><span lang=EN-US style='font-size:7.5pt;font-family:
3373 Arial'>If not exlicitly listed, C++ implies </span><tt><span lang=EN-US
3374 style='font-size:7.5pt'>int</span></tt><span lang=EN-US style='font-size:
3375 7.5pt;font-family:Arial'> return value for functions. A programmer must
3376 never rely on this feature, since this might be confusing for programmers
3377 not aware of this artifact. <o:p></o:p></span></p>
3378 </td>
3379 </tr>
3380 </table>
3381 <p style='margin:0cm;margin-bottom:.0001pt'><span lang=EN-US
3382 style='display:none;mso-hide:all'><o:p>&nbsp;</o:p></span></p>
3383 <table class=TableNormal border=1 cellpadding=0 width="100%"
3384 style='width:100.0%;mso-cellspacing:1.5pt;mso-padding-alt:0cm 5.4pt 0cm 5.4pt'>
3385 <tr style='mso-yfti-irow:0'>
3386 <td style='background:#BBCCEE;padding:.75pt .75pt .75pt .75pt'>
3387 <p class=MsoNormal><b><span lang=EN-US style='font-size:10.0pt;font-family:
3388 Arial'><!--
3389 ****************************************************************************
3390 Rule
3391 ****************************************************************************
3392 -->67. </span></b><span class=GramE><tt><b><span lang=EN-US style='font-size:
3393 10.0pt'>goto</span></b></tt></span><b><span lang=EN-US style='font-size:
3394 10.0pt;font-family:Arial'> should not be used. <o:p></o:p></span></b></p>
3395 </td>
3396 </tr>
3397 <tr style='mso-yfti-irow:1'>
3398 <td style='padding:.75pt .75pt .75pt .75pt'>
3399 <p class=MsoNormal><span lang=EN-US style='font-size:10.0pt;font-family:
3400 Arial'><o:p>&nbsp;</o:p></span></p>
3401 </td>
3402 </tr>
3403 <tr style='mso-yfti-irow:2;mso-yfti-lastrow:yes'>
3404 <td style='padding:.75pt .75pt .75pt .75pt'>
3405 <p class=MsoNormal><span class=GramE><span lang=EN-US style='font-size:
3406 7.5pt;font-family:Arial'>Goto statements violates</span></span><span
3407 lang=EN-US style='font-size:7.5pt;font-family:Arial'> the idea of
3408 structured code. Only in some very few cases (for instance breaking out of
3409 deeply nested structures) should goto be considered, and only if the
3410 alternative structured counterpart is proven to be less readable. <o:p></o:p></span></p>
3411 </td>
3412 </tr>
3413 </table>
3414 <p style='margin:0cm;margin-bottom:.0001pt'><span lang=EN-US
3415 style='display:none;mso-hide:all'><o:p>&nbsp;</o:p></span></p>
3416 <table class=TableNormal border=1 cellpadding=0 width="100%"
3417 style='width:100.0%;mso-cellspacing:1.5pt;mso-padding-alt:0cm 5.4pt 0cm 5.4pt'>
3418 <tr style='mso-yfti-irow:0'>
3419 <td style='background:#BBCCEE;padding:.75pt .75pt .75pt .75pt'>
3420 <p class=MsoNormal><b><span lang=EN-US style='font-size:10.0pt;font-family:
3421 Arial'><!--
3422 ****************************************************************************
3423 Rule
3424 ****************************************************************************
3425 -->68. &quot;0&quot; should be used instead of &quot;NULL&quot;. <o:p></o:p></span></b></p>
3426 </td>
3427 </tr>
3428 <tr style='mso-yfti-irow:1'>
3429 <td style='padding:.75pt .75pt .75pt .75pt'>
3430 <p class=MsoNormal><span lang=EN-US style='font-size:10.0pt;font-family:
3431 Arial'><o:p>&nbsp;</o:p></span></p>
3432 </td>
3433 </tr>
3434 <tr style='mso-yfti-irow:2;mso-yfti-lastrow:yes'>
3435 <td style='padding:.75pt .75pt .75pt .75pt'>
3436 <p class=MsoNormal><tt><span lang=EN-US style='font-size:7.5pt'>NULL</span></tt><span
3437 lang=EN-US style='font-size:7.5pt;font-family:Arial'>is part of the
3438 standard C library, but is made obsolete in C++. <o:p></o:p></span></p>
3439 </td>
3440 </tr>
3441 </table>
3442 <p style='margin-bottom:12.0pt'><span lang=EN-US><br style='mso-special-character:
3443 line-break'>
3444 <![if !supportLineBreakNewLine]><br style='mso-special-character:line-break'>
3445 <![endif]></span></p>
3446 <h2><a name="Layout_and_Comments"></a><span lang=EN-US>6 Layout and White Space </span></h2>
3447 <h3><a name=Layout></a><span lang=EN-US>6.1 Layout<o:p></o:p></span></h3>
3448 <!--
3449 ****************************************************************************
3450 Rule
3451 ****************************************************************************
3452 -->
3453 <table class=TableNormal border=1 cellpadding=0 width="100%"
3454 style='width:100.0%;mso-cellspacing:1.5pt;mso-padding-alt:0cm 5.4pt 0cm 5.4pt'>
3455 <tr style='mso-yfti-irow:0'>
3456 <td style='background:#BBCCEE;padding:.75pt .75pt .75pt .75pt'>
3457 <p class=MsoNormal><b><span lang=EN-US style='font-size:10.0pt;font-family:
3458 Arial'>69. Basic indentation should be 4. <o:p></o:p></span></b></p>
3459 </td>
3460 </tr>
3461 <tr style='mso-yfti-irow:1'>
3462 <td style='padding:.75pt .75pt .75pt .75pt'>
3463 <p class=MsoNormal><tt><span lang=EN-US style='font-size:10.0pt'>for (i =
3464 0; i &lt; nElements; i++)</span></tt><span lang=EN-US style='font-size:
3465 10.0pt;font-family:fixed;mso-bidi-font-family:"Courier New"'><br>
3466 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;
3467 a[i] = 0; </span></tt></span><span lang=EN-US style='font-size:10.0pt;
3468 font-family:Arial'><o:p></o:p></span></p>
3469 </td>
3470 </tr>
3471 <tr style='mso-yfti-irow:2;mso-yfti-lastrow:yes'>
3472 <td style='padding:.75pt .75pt .75pt .75pt'>
3473 <p class=MsoNormal><span lang=EN-US style='font-size:7.5pt;font-family:
3474 Arial'>Indentation of 1 is <span class=GramE>to</span> small to emphasize
3475 the logical layout of the code. Indentation larger than 4 makes deeply
3476 nested code difficult to read and increase the chance that the lines must
3477 be split. Choosing between indentation of 2, 3 and 4,<span class=GramE>&nbsp;
3478 2</span> and 4 are the more common, <o:p> we prefer 4.</o:p></span></p>
3479 </td>
3480 </tr>
3481 </table>
3482 <!--
3483 ****************************************************************************
3484 Rule
3485 ****************************************************************************
3486 -->
3487 <p style='margin:0cm;margin-bottom:.0001pt'><span lang=EN-US
3488 style='display:none;mso-hide:all'><o:p>&nbsp;</o:p></span></p>
3489 <table class=TableNormal border=1 cellpadding=0 width="100%"
3490 style='width:100.0%;mso-cellspacing:1.5pt;mso-padding-alt:0cm 5.4pt 0cm 5.4pt'>
3491 <tr style='mso-yfti-irow:0'>
3492 <td colspan=2 style='background:#BBCCEE;padding:.75pt .75pt .75pt .75pt'>
3493 <p class=MsoNormal><b><span lang=EN-US style='font-size:10.0pt;font-family:
3494 Arial'>70. Block layout should be as illustrated in example 1 below
3495 , and must not be as shown in example 2.
3496 <o:p></o:p></span></b></p>
3497 </td>
3498 </tr>
3499 <tr style='mso-yfti-irow:1'>
3500 <td width="33%" style='width:33.0%;padding:.75pt .75pt .75pt .75pt'>
3501 <p class=MsoNormal><tt><span lang=EN-US style='font-size:10.0pt'>while
3502 (!done) {</span></tt><span lang=EN-US style='font-size:10.0pt;font-family:
3503 fixed;mso-bidi-font-family:"Courier New"'><br>
3504 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;
3505 doSomething();</span></tt><br>
3506 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;
3507 done = moreToDo();</span></tt><br>
3508 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>}</span></tt></span><span
3509 lang=EN-US style='font-size:10.0pt;font-family:Arial'><o:p></o:p></span></p>
3510 </td>
3511 <td bgcolor="#FDB5A6" style='width:33.0%;padding:.75pt .75pt .75pt .75pt'>
3512 <p class=MsoNormal><tt><span lang=EN-US style='font-size:10.0pt'>while
3513 (!done)</span></tt><span lang=EN-US style='font-size:10.0pt;font-family:
3514 fixed;mso-bidi-font-family:"Courier New"'><br>
3515 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>{</span></tt><br>
3516 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;
3517 doSomething();</span></tt><br>
3518 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;
3519 done = moreToDo();</span></tt><br>
3520 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>}</span></tt></span><span
3521 lang=EN-US style='font-size:10.0pt;font-family:Arial'><o:p></o:p></span></p>
3522 <p class=MsoNormal><span
3523 lang=EN-US style='font-size:10.0pt;font-family:Arial'><o:p></o:p></span></p> <p class=MsoNormal><tt><span lang=EN-US style='font-size:10.0pt'>while
3524 (!done)</span></tt><span lang=EN-US style='font-size:10.0pt;font-family:
3525 fixed;mso-bidi-font-family:"Courier New"'><br>
3526 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>&nbsp;
3527 {</span></tt><br>
3528 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>&nbsp;&nbsp;&nbsp;
3529 doSomething();</span></tt><br>
3530 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>&nbsp;&nbsp;&nbsp;
3531 done = moreToDo();</span></tt><br>
3532 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>&nbsp;
3533 }</span></tt></span><span lang=EN-US style='font-size:10.0pt;font-family:
3534 Arial'><o:p></o:p></span></p></td>
3535 </tr>
3536 <tr style='mso-yfti-irow:2;mso-yfti-lastrow:yes'>
3537 <td colspan=2 style='padding:.75pt .75pt .75pt .75pt'>
3538 <p class=MsoNormal><span class=GramE><span lang=EN-US style='font-size:
3539 7.5pt;font-family:Arial'>Example 3 introduce</span></span><span lang=EN-US
3540 style='font-size:7.5pt;font-family:Arial'> an extra indentation level which
3541 doesn't emphasize the logical structure of the code as clearly as example 1
3542 and 2.&nbsp; <o:p></o:p></span></p>
3543 </td>
3544 </tr>
3545 </table>
3546 <p style='margin:0cm;margin-bottom:.0001pt'><span lang=EN-US
3547 style='display:none;mso-hide:all'><o:p>&nbsp;</o:p></span></p>
3548 <table class=TableNormal border=1 cellpadding=0 width="100%"
3549 style='width:100.0%;mso-cellspacing:1.5pt;mso-padding-alt:0cm 5.4pt 0cm 5.4pt'>
3550 <tr style='mso-yfti-irow:0'>
3551 <td style='background:#BBCCEE;padding:.75pt .75pt .75pt .75pt'>
3552 <p class=MsoNormal><b><span lang=EN-US style='font-size:10.0pt;font-family:
3553 Arial'><!--
3554 ****************************************************************************
3555 Rule
3556 ****************************************************************************
3557 -->71. The </span></b><tt><b><span lang=EN-US style='font-size:10.0pt'>class</span></b></tt><b><span
3558 lang=EN-US style='font-size:10.0pt;font-family:Arial'> declarations should
3559 have the following form: <o:p></o:p></span></b></p>
3560 </td>
3561 </tr>
3562 <tr style='mso-yfti-irow:1'>
3563 <td style='padding:.75pt .75pt .75pt .75pt'>
3564 <p class=MsoNormal><span class=GramE><tt><span lang=EN-US style='font-size:
3565 10.0pt'>class</span></tt></span><tt><span lang=EN-US style='font-size:10.0pt'>
3566 SomeClass : public BaseClass</span></tt><span lang=EN-US style='font-size:
3567 10.0pt;font-family:fixed;mso-bidi-font-family:"Courier New"'> <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>{</span></tt><br>
3568 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;
3569 public: </span></tt><br>
3570 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
3571 &nbsp; ... </span></tt><br>
3572 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;
3573 protected: </span></tt><br>
3574 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
3575 &nbsp; ... </span></tt><br>
3576 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;
3577 private: </span></tt><br>
3578 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
3579 &nbsp; ... </span></tt><br>
3580 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>}</span></tt></span><span
3581 lang=EN-US style='font-size:10.0pt;font-family:Arial'><o:p></o:p></span></p>
3582 </td>
3583 </tr>
3584 <tr style='mso-yfti-irow:2;mso-yfti-lastrow:yes'>
3585 <td style='padding:.75pt .75pt .75pt .75pt'>
3586 <p class=MsoNormal><span lang=EN-US style='font-size:7.5pt;font-family:
3587 Arial'>This follows partly from the general block rule above. <o:p> Must follow the order of these access keyword, public comes first, and then protected and private </o:p></span></p>
3588 </td>
3589 </tr>
3590 </table>
3591 <p style='margin:0cm;margin-bottom:.0001pt'><span lang=EN-US
3592 style='display:none;mso-hide:all'><o:p>&nbsp;</o:p></span></p>
3593 <table class=TableNormal border=1 cellpadding=0 width="100%"
3594 style='width:100.0%;mso-cellspacing:1.5pt;mso-padding-alt:0cm 5.4pt 0cm 5.4pt'>
3595 <tr style='mso-yfti-irow:0'>
3596 <td style='background:#BBCCEE;padding:.75pt .75pt .75pt .75pt'>
3597 <p class=MsoNormal><b><span lang=EN-US style='font-size:10.0pt;font-family:
3598 Arial'><!--
3599 ****************************************************************************
3600 Rule
3601 ****************************************************************************
3602 -->72. The function declarations should have the following form: <o:p></o:p></span></b></p>
3603 </td>
3604 </tr>
3605 <tr style='mso-yfti-irow:1'>
3606 <td style='padding:.75pt .75pt .75pt .75pt'>
3607 <p class=MsoNormal><tt><span lang=EN-US style='font-size:10.0pt'>void
3608 someMethod() </span></tt><span lang=EN-US style='font-size:10.0pt;
3609 font-family:fixed;mso-bidi-font-family:"Courier New"'> <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>{</span></tt><br>
3610 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>&nbsp;
3611 ...</span></tt><br>
3612 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>}</span></tt></span><span
3613 lang=EN-US style='font-size:10.0pt;font-family:Arial'><o:p></o:p></span></p>
3614 </td>
3615 </tr>
3616 <tr style='mso-yfti-irow:2;mso-yfti-lastrow:yes'>
3617 <td style='padding:.75pt .75pt .75pt .75pt'>
3618 <p class=MsoNormal><span lang=EN-US style='font-size:7.5pt;font-family:
3619 Arial'>This follows from the general block rule above. <o:p></o:p></span></p>
3620 </td>
3621 </tr>
3622 </table>
3623 <p style='margin:0cm;margin-bottom:.0001pt'><span lang=EN-US
3624 style='display:none;mso-hide:all'><o:p>&nbsp;</o:p></span></p>
3625 <table class=TableNormal border=1 cellpadding=0 width="100%"
3626 style='width:100.0%;mso-cellspacing:1.5pt;mso-padding-alt:0cm 5.4pt 0cm 5.4pt'>
3627 <tr style='mso-yfti-irow:0'>
3628 <td style='background:#BBCCEE;padding:.75pt .75pt .75pt .75pt'>
3629 <p class=MsoNormal><b><span lang=EN-US style='font-size:10.0pt;font-family:
3630 Arial'><!--
3631 ****************************************************************************
3632 Rule
3633 ****************************************************************************
3634 -->73. The </span></b><tt><b><span lang=EN-US style='font-size:10.0pt'>if-else</span></b></tt><b><span
3635 lang=EN-US style='font-size:10.0pt;font-family:Arial'> class of statements
3636 should have the following form: <o:p></o:p></span></b></p>
3637 </td>
3638 </tr>
3639 <tr style='mso-yfti-irow:1'>
3640 <td style='padding:.75pt .75pt .75pt .75pt'>
3641 <p class=MsoNormal><tt><span lang=EN-US style='font-size:10.0pt'>if
3642 (condition) {</span></tt><span lang=EN-US style='font-size:10.0pt;
3643 font-family:fixed;mso-bidi-font-family:"Courier New"'><br>
3644 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;
3645 statements;</span></tt><br>
3646 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>}</span></tt><br>
3647 <br>
3648 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>if
3649 (condition) {</span></tt><br>
3650 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;
3651 statements;</span></tt><br>
3652 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>} </span></tt><tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>else
3653 {</span></tt><br>
3654 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;
3655 statements;</span></tt><br>
3656 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>}</span></tt><br>
3657 <br>
3658 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>if
3659 (condition) {</span></tt><br>
3660 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;
3661 statements;</span></tt><br>
3662 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>} else if
3663 (condition) {</span></tt><br>
3664 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;
3665 statements;</span></tt><br>
3666 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>} else
3667 {</span></tt><br>
3668 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;
3669 statements;</span></tt><br>
3670 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>}</span></tt></span><span
3671 lang=EN-US style='font-size:10.0pt;font-family:Arial'><o:p></o:p></span></p>
3672 </td>
3673 </tr>
3674 <tr style='mso-yfti-irow:2;mso-yfti-lastrow:yes'>
3675 <td style='padding:.75pt .75pt .75pt .75pt'>
3676 <p class=MsoNormal><span
3677 lang=EN-US style='font-size:7.5pt;font-family:Arial'><o:p></o:p></span></p>
3678 </td>
3679 </tr>
3680 </table>
3681 <p style='margin:0cm;margin-bottom:.0001pt'><span lang=EN-US
3682 style='display:none;mso-hide:all'><o:p>&nbsp;</o:p></span></p>
3683 <table class=TableNormal border=1 cellpadding=0 width="100%"
3684 style='width:100.0%;mso-cellspacing:1.5pt;mso-padding-alt:0cm 5.4pt 0cm 5.4pt'>
3685 <tr style='mso-yfti-irow:0'>
3686 <td style='background:#BBCCEE;padding:.75pt .75pt .75pt .75pt'>
3687 <p class=MsoNormal><b><span lang=EN-US style='font-size:10.0pt;font-family:
3688 Arial'><!--
3689 ****************************************************************************
3690 Rule
3691 ****************************************************************************
3692 -->74. A </span></b><tt><b><span lang=EN-US style='font-size:10.0pt'>for</span></b></tt><b><span
3693 lang=EN-US style='font-size:10.0pt;font-family:Arial'> statement should
3694 have the following form: <o:p></o:p></span></b></p>
3695 </td>
3696 </tr>
3697 <tr style='mso-yfti-irow:1'>
3698 <td style='padding:.75pt .75pt .75pt .75pt'>
3699 <p class=MsoNormal><tt><span lang=EN-US style='font-size:10.0pt'>for
3700 (initialization; condition; update) {</span></tt><span lang=EN-US
3701 style='font-size:10.0pt;font-family:fixed;mso-bidi-font-family:"Courier New"'><br>
3702 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;
3703 statements;</span></tt><br>
3704 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>}</span></tt></span><span
3705 lang=EN-US style='font-size:10.0pt;font-family:Arial'><o:p></o:p></span></p>
3706 </td>
3707 </tr>
3708 <tr style='mso-yfti-irow:2;mso-yfti-lastrow:yes'>
3709 <td style='padding:.75pt .75pt .75pt .75pt'>
3710 <p class=MsoNormal><span lang=EN-US style='font-size:7.5pt;font-family:
3711 Arial'>This follows from the general block rule above. <o:p></o:p></span></p>
3712 </td>
3713 </tr>
3714 </table>
3715 <p style='margin:0cm;margin-bottom:.0001pt'><span lang=EN-US
3716 style='display:none;mso-hide:all'><o:p>&nbsp;</o:p></span></p>
3717 <table class=TableNormal border=1 cellpadding=0 width="100%"
3718 style='width:100.0%;mso-cellspacing:1.5pt;mso-padding-alt:0cm 5.4pt 0cm 5.4pt'>
3719 <tr style='mso-yfti-irow:0'>
3720 <td style='background:#BBCCEE;padding:.75pt .75pt .75pt .75pt'>
3721 <p class=MsoNormal><b><span lang=EN-US style='font-size:10.0pt;font-family:
3722 Arial'><!--
3723 ****************************************************************************
3724 Rule
3725 ****************************************************************************
3726 -->75. An empty </span></b><tt><b><span lang=EN-US style='font-size:10.0pt'>for</span></b></tt><b><span
3727 lang=EN-US style='font-size:10.0pt;font-family:Arial'> statement should
3728 have the following form: <o:p></o:p></span></b></p>
3729 </td>
3730 </tr>
3731 <tr style='mso-yfti-irow:1'>
3732 <td style='padding:.75pt .75pt .75pt .75pt'>
3733 <p class=MsoNormal><tt><span lang=EN-US style='font-size:10.0pt'>for
3734 (initialization; condition; update)</span></tt><span lang=EN-US
3735 style='font-size:10.0pt;font-family:fixed;mso-bidi-font-family:"Courier New"'><br>
3736 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>&nbsp;
3737 ; </span></tt></span><span lang=EN-US style='font-size:10.0pt;font-family:
3738 Arial'><o:p></o:p></span></p>
3739 </td>
3740 </tr>
3741 <tr style='mso-yfti-irow:2;mso-yfti-lastrow:yes'>
3742 <td style='padding:.75pt .75pt .75pt .75pt'>
3743 <p class=MsoNormal><span lang=EN-US style='font-size:7.5pt;font-family:
3744 Arial'>This emphasize the fact that <span class=GramE>the for</span>
3745 statement is empty and it makes it obvious for the reader that this is
3746 intentional. Empty loops should be avoided however. <o:p></o:p></span></p>
3747 </td>
3748 </tr>
3749 </table>
3750 <p style='margin:0cm;margin-bottom:.0001pt'><span lang=EN-US
3751 style='display:none;mso-hide:all'><o:p>&nbsp;</o:p></span></p>
3752 <table class=TableNormal border=1 cellpadding=0 width="100%"
3753 style='width:100.0%;mso-cellspacing:1.5pt;mso-padding-alt:0cm 5.4pt 0cm 5.4pt'>
3754 <tr style='mso-yfti-irow:0'>
3755 <td style='background:#BBCCEE;padding:.75pt .75pt .75pt .75pt'>
3756 <p class=MsoNormal><b><span lang=EN-US style='font-size:10.0pt;font-family:
3757 Arial'><!--
3758 ****************************************************************************
3759 Rule
3760 ****************************************************************************
3761 -->76. A </span></b><tt><b><span lang=EN-US style='font-size:10.0pt'>while</span></b></tt><b><span
3762 lang=EN-US style='font-size:10.0pt;font-family:Arial'> statement should
3763 have the following form: <o:p></o:p></span></b></p>
3764 </td>
3765 </tr>
3766 <tr style='mso-yfti-irow:1'>
3767 <td style='padding:.75pt .75pt .75pt .75pt'>
3768 <p class=MsoNormal><tt><span lang=EN-US style='font-size:10.0pt'>while
3769 (condition) {</span></tt><span lang=EN-US style='font-size:10.0pt;
3770 font-family:fixed;mso-bidi-font-family:"Courier New"'><br>
3771 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;
3772 statements;</span></tt><br>
3773 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>}</span></tt></span><span
3774 lang=EN-US style='font-size:10.0pt;font-family:Arial'><o:p></o:p></span></p>
3775 </td>
3776 </tr>
3777 <tr style='mso-yfti-irow:2;mso-yfti-lastrow:yes'>
3778 <td style='padding:.75pt .75pt .75pt .75pt'>
3779 <p class=MsoNormal><span lang=EN-US style='font-size:7.5pt;font-family:
3780 Arial'>This follows from the general block rule above. <o:p></o:p></span></p>
3781 </td>
3782 </tr>
3783 </table>
3784 <p style='margin:0cm;margin-bottom:.0001pt'><span lang=EN-US
3785 style='display:none;mso-hide:all'><o:p>&nbsp;</o:p></span></p>
3786 <table class=TableNormal border=1 cellpadding=0 width="100%"
3787 style='width:100.0%;mso-cellspacing:1.5pt;mso-padding-alt:0cm 5.4pt 0cm 5.4pt'>
3788 <tr style='mso-yfti-irow:0'>
3789 <td style='background:#BBCCEE;padding:.75pt .75pt .75pt .75pt'>
3790 <p class=MsoNormal><b><span lang=EN-US style='font-size:10.0pt;font-family:
3791 Arial'><!--
3792 ****************************************************************************
3793 Rule
3794 ****************************************************************************
3795 -->77. A </span></b><tt><b><span lang=EN-US style='font-size:10.0pt'>do-while</span></b></tt><b><span
3796 lang=EN-US style='font-size:10.0pt;font-family:Arial'> statement should
3797 have the following form: <o:p></o:p></span></b></p>
3798 </td>
3799 </tr>
3800 <tr style='mso-yfti-irow:1'>
3801 <td style='padding:.75pt .75pt .75pt .75pt'>
3802 <p class=MsoNormal><tt><span lang=EN-US style='font-size:10.0pt'>do {</span></tt><span
3803 lang=EN-US style='font-size:10.0pt;font-family:fixed;mso-bidi-font-family:
3804 "Courier New"'><br>
3805 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;
3806 statements;</span></tt><br>
3807 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>}
3808 while (condition);</span></tt></span><span lang=EN-US style='font-size:
3809 10.0pt;font-family:Arial'><o:p></o:p></span></p>
3810 </td>
3811 </tr>
3812 <tr style='mso-yfti-irow:2;mso-yfti-lastrow:yes'>
3813 <td style='padding:.75pt .75pt .75pt .75pt'>
3814 <p class=MsoNormal><span lang=EN-US style='font-size:7.5pt;font-family:
3815 Arial'>This follows from the general block rule above. <o:p></o:p></span></p>
3816 </td>
3817 </tr>
3818 </table>
3819 <p style='margin:0cm;margin-bottom:.0001pt'><span lang=EN-US
3820 style='display:none;mso-hide:all'><o:p>&nbsp;</o:p></span></p>
3821 <table class=TableNormal border=1 cellpadding=0 width="100%"
3822 style='width:100.0%;mso-cellspacing:1.5pt;mso-padding-alt:0cm 5.4pt 0cm 5.4pt'>
3823 <tr style='mso-yfti-irow:0'>
3824 <td style='background:#BBCCEE;padding:.75pt .75pt .75pt .75pt'>
3825 <p class=MsoNormal><b><span lang=EN-US style='font-size:10.0pt;font-family:
3826 Arial'><!--
3827 ****************************************************************************
3828 Rule
3829 ****************************************************************************
3830 -->78. A </span></b><tt><b><span lang=EN-US style='font-size:10.0pt'>switch</span></b></tt><b><span
3831 lang=EN-US style='font-size:10.0pt;font-family:Arial'> statement should
3832 have the following form: <o:p></o:p></span></b></p>
3833 </td>
3834 </tr>
3835 <tr style='mso-yfti-irow:1'>
3836 <td style='padding:.75pt .75pt .75pt .75pt'>
3837 <p class=MsoNormal><tt><span lang=EN-US style='font-size:10.0pt'>switch
3838 (condition) {</span></tt><span lang=EN-US style='font-size:10.0pt;
3839 font-family:fixed;mso-bidi-font-family:"Courier New"'><br>
3840 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;
3841 case ABC : </span></tt><br>
3842 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
3843 &nbsp; statements;</span></tt><br>
3844 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
3845 &nbsp; break; </span></tt></span></p>
3846 <p class=MsoNormal><span lang=EN-US style='font-size:10.0pt;
3847 font-family:fixed;mso-bidi-font-family:"Courier New"'><br>
3848 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;
3849 default : </span></tt><br>
3850 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
3851 &nbsp; statements;</span></tt><br>
3852 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
3853 &nbsp; break;</span></tt><br>
3854 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>}</span></tt></span><span
3855 lang=EN-US style='font-size:10.0pt;font-family:Arial'><o:p></o:p></span></p></td>
3856 </tr>
3857 <tr style='mso-yfti-irow:2;mso-yfti-lastrow:yes'>
3858 <td style='padding:.75pt .75pt .75pt .75pt'>
3859 <p class=MsoNormal><span lang=EN-US style='font-size:7.5pt;font-family:
3860 Arial'>Note that each </span><tt><span lang=EN-US style='font-size:7.5pt'>case</span></tt><span
3861 lang=EN-US style='font-size:7.5pt;font-family:Arial'> keyword is indented
3862 relative to the switch statement as a whole. This makes the entire switch
3863 statement stand out. Note also the extra space before <span class=GramE>the
3864 <i>:</i></span> character. The explicit <i>Fallthrough</i> comment should
3865 be included whenever there is a case statement without a </span><tt><span
3866 lang=EN-US style='font-size:7.5pt'>break</span></tt><span lang=EN-US
3867 style='font-size:7.5pt;font-family:Arial'> statement. Leaving the </span><tt><span
3868 lang=EN-US style='font-size:7.5pt'>break</span></tt><span lang=EN-US
3869 style='font-size:7.5pt;font-family:Arial'> out is a common error, and it
3870 must be made clear that it is intentional when it is not there. <o:p></o:p></span></p>
3871 </td>
3872 </tr>
3873 </table>
3874 <p style='margin:0cm;margin-bottom:.0001pt'><span lang=EN-US
3875 style='display:none;mso-hide:all'><o:p>&nbsp;</o:p></span></p>
3876 <table class=TableNormal border=1 cellpadding=0 width="100%"
3877 style='width:100.0%;mso-cellspacing:1.5pt;mso-padding-alt:0cm 5.4pt 0cm 5.4pt'>
3878 <tr style='mso-yfti-irow:0'>
3879 <td style='background:#BBCCEE;padding:.75pt .75pt .75pt .75pt'>
3880 <p class=MsoNormal><b><span lang=EN-US style='font-size:10.0pt;font-family:
3881 Arial'><!--
3882 ****************************************************************************
3883 Rule
3884 ****************************************************************************
3885 -->79. A </span></b><tt><b><span lang=EN-US style='font-size:10.0pt'>try-catch</span></b></tt><b><span
3886 lang=EN-US style='font-size:10.0pt;font-family:Arial'> statement should
3887 have the following form: <o:p></o:p></span></b></p>
3888 </td>
3889 </tr>
3890 <tr style='mso-yfti-irow:1'>
3891 <td style='padding:.75pt .75pt .75pt .75pt'>
3892 <p class=MsoNormal><tt><span lang=EN-US style='font-size:10.0pt'>try {</span></tt><span
3893 lang=EN-US style='font-size:10.0pt;font-family:fixed;mso-bidi-font-family:
3894 "Courier New"'><br>
3895 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;
3896 statements;</span></tt><br>
3897 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>} catch
3898 (Exception &amp;exception) {</span></tt><br>
3899 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;
3900 statements;</span></tt><br>
3901 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>}</span></tt></span><span
3902 lang=EN-US style='font-size:10.0pt;font-family:Arial'><o:p></o:p></span></p>
3903 </td>
3904 </tr>
3905 <tr style='mso-yfti-irow:2;mso-yfti-lastrow:yes'>
3906 <td style='padding:.75pt .75pt .75pt .75pt'>
3907 <p class=MsoNormal><span lang=EN-US style='font-size:7.5pt;font-family:
3908 Arial'>This follows partly from the general block rule above. The <span
3909 class=GramE>discussion about closing brackets for <tt><span
3910 style='mso-ansi-font-size:7.5pt;mso-bidi-font-size:7.5pt'>if-else
3911 statements apply</span></tt></span></span><tt><span lang=EN-US
3912 style='font-size:7.5pt'> to the try-catch statments. </span></tt><span
3913 lang=EN-US style='font-size:7.5pt;font-family:Arial'><o:p></o:p></span></p>
3914 </td>
3915 </tr>
3916 </table>
3917 <p style='margin:0cm;margin-bottom:.0001pt'><span lang=EN-US
3918 style='display:none;mso-hide:all'><o:p>&nbsp;</o:p></span></p>
3919 <table class=TableNormal border=1 cellpadding=0 width="100%"
3920 style='width:100.0%;mso-cellspacing:1.5pt;mso-padding-alt:0cm 5.4pt 0cm 5.4pt'>
3921 <tr style='mso-yfti-irow:0'>
3922 <td style='background:#BBCCEE;padding:.75pt .75pt .75pt .75pt'>
3923 <p class=MsoNormal><b><span lang=EN-US style='font-size:10.0pt;font-family:
3924 Arial'><!--
3925 ****************************************************************************
3926 Rule
3927 ****************************************************************************
3928 -->80. Single statement </span></b><tt><b><span lang=EN-US style='font-size:
3929 10.0pt'>if-else</span></b></tt><b><span lang=EN-US style='font-size:10.0pt;
3930 font-family:Arial'>, </span></b><tt><b><span lang=EN-US style='font-size:
3931 10.0pt'>for</span></b></tt><b><span lang=EN-US style='font-size:10.0pt;
3932 font-family:Arial'> or </span></b><tt><b><span lang=EN-US style='font-size:
3933 10.0pt'>while</span></b></tt><b><span lang=EN-US style='font-size:10.0pt;
3934 font-family:Arial'> statements can be written without brackets. <o:p></o:p></span></b></p>
3935 </td>
3936 </tr>
3937 <tr style='mso-yfti-irow:1'>
3938 <td style='padding:.75pt .75pt .75pt .75pt'>
3939 <p class=MsoNormal style='margin-bottom:12.0pt'><tt><span lang=EN-US
3940 style='font-size:10.0pt'>if (condition) </span></tt><span lang=EN-US
3941 style='font-size:10.0pt;font-family:fixed;mso-bidi-font-family:"Courier New"'><br>
3942 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;
3943 statement;</span></tt><br>
3944 <br>
3945 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>while
3946 (condition) </span></tt><br>
3947 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;
3948 statement;</span></tt><br>
3949 <br>
3950 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>for (initialization;
3951 condition; update) </span></tt><br>
3952 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;
3953 statement;</span></tt></span><span lang=EN-US style='font-size:10.0pt;
3954 font-family:Arial'><o:p></o:p></span></p>
3955 </td>
3956 </tr>
3957 <tr style='mso-yfti-irow:2;mso-yfti-lastrow:yes'>
3958 <td style='padding:.75pt .75pt .75pt .75pt'>
3959 <p class=MsoNormal><span lang=EN-US style='font-size:7.5pt;font-family:
3960 Arial'>It is a common recommendation (Sun Java recommendation included)
3961 that brackets should always be used in all these cases. However, brackets
3962 are in general a language construct that groups several statements.
3963 Brackets are per definition superfluous on a single statement. <o:p></o:p></span></p>
3964 </td>
3965 </tr>
3966 </table>
3967 <p style='margin:0cm;margin-bottom:.0001pt'><span lang=EN-US
3968 style='display:none;mso-hide:all'><o:p>&nbsp;</o:p></span></p>
3969 <table class=TableNormal border=1 cellpadding=0 width="100%"
3970 style='width:100.0%;mso-cellspacing:1.5pt;mso-padding-alt:0cm 5.4pt 0cm 5.4pt'>
3971 <tr style='mso-yfti-irow:0'>
3972 <td style='background:#BBCCEE;padding:.75pt .75pt .75pt .75pt'>
3973 <p class=MsoNormal><b><span lang=EN-US style='font-size:10.0pt;font-family:
3974 Arial'><!--
3975 ****************************************************************************
3976 Rule
3977 ****************************************************************************
3978 -->81. The function return type can be put in the left column immediately above
3979 the function name. <o:p></o:p></span></b></p>
3980 </td>
3981 </tr>
3982 <tr style='mso-yfti-irow:1'>
3983 <td style='padding:.75pt .75pt .75pt .75pt'>
3984 <p class=MsoNormal><tt><span lang=EN-US style='font-size:10.0pt'>void</span></tt><span
3985 lang=EN-US style='font-size:10.0pt;font-family:fixed;mso-bidi-font-family:
3986 "Courier New"'> <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:
3987 10.0pt'>MyClass::myMethod ()</span> <span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>{</span></tt><br>
3988 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>&nbsp;
3989 :</span></tt><br>
3990 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>} </span></tt></span><span
3991 lang=EN-US style='font-size:10.0pt;font-family:Arial'><o:p></o:p></span></p>
3992 </td>
3993 </tr>
3994 <tr style='mso-yfti-irow:2;mso-yfti-lastrow:yes'>
3995 <td style='padding:.75pt .75pt .75pt .75pt'>
3996 <p class=MsoNormal><span lang=EN-US style='font-size:7.5pt;font-family:
3997 Arial'>This makes it easier to spot function names within a file since one
3998 can assume that they all start in the first column. <o:p></o:p></span></p>
3999 </td>
4000 </tr>
4001 </table>
4002 <h3><a name="White_Space"></a><span lang=EN-US>6.2 White Space<o:p></o:p></span></h3>
4003 <!--
4004 ****************************************************************************
4005 Rule
4006 ****************************************************************************
4007 -->
4008 <table class=TableNormal border=1 cellpadding=0 width="100%"
4009 style='width:100.0%;mso-cellspacing:1.5pt;mso-padding-alt:0cm 5.4pt 0cm 5.4pt'>
4010 <tr style='mso-yfti-irow:0'>
4011 <td colspan="2" style='background:#BBCCEE;padding:.75pt .75pt .75pt .75pt'>
4012 <p class=MsoNormal><b><span lang=EN-US style='font-size:10.0pt;font-family:
4013 Arial'>82<span class=GramE>.</span><br>
4014 - Conventional operators should be surrounded by a space character. <br>
4015 - C++ reserved words should be followed by a white space. <br>
4016 - Commas should be followed by a white space. <br>
4017 - Colons should be surrounded by white space. <br>
4018 - Semicolons in for statments should be followed by a space character. <o:p></o:p></span></b></p>
4019 </td>
4020 </tr>
4021 <tr style='mso-yfti-irow:1'>
4022 <td style='padding:.75pt .75pt .75pt .75pt'>
4023 <p class=MsoNormal><tt><span lang=EN-US style='font-size:10.0pt'>a = (b +
4024 c) * d;</span></tt><span lang=EN-US style='font-size:
4025 10.0pt;font-family:fixed;mso-bidi-font-family:"Courier New"'><br>
4026 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>while
4027 (true) {</span></tt><br>
4028 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>doSomething
4029 (a, b, c, d);</span></tt><br>
4030 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>case
4031 100 :</span></tt><br>
4032 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>for
4033 (i = 0; i &lt; 10; i++) {</span></tt></span><span
4034 lang=EN-US style='font-size:10.0pt;font-family:Arial'><o:p></o:p></span></p>
4035 </td>
4036 <td bgcolor="#FDB5A6" style='padding:.75pt .75pt .75pt .75pt'><span class="MsoNormal"><tt><span lang=EN-US style='font-size:10.0pt'>a=(b+c)*d</span></tt><span lang=EN-US style='font-size:
4037 10.0pt;font-family:fixed;mso-bidi-font-family:"Courier New"'><br>
4038 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>while(true) ...</span></tt><br>
4039 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>doSomething (a,b,c,d);</span></tt><br>
4040 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>case 100:</span></tt><br>
4041 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>for (i=0;i&lt;10;i++){ </span></tt></span><span
4042 lang=EN-US style='font-size:10.0pt;font-family:Arial'><o:p></o:p></span></span></td>
4043 </tr>
4044 <tr style='mso-yfti-irow:2;mso-yfti-lastrow:yes'>
4045 <td colspan="2" style='padding:.75pt .75pt .75pt .75pt'>
4046 <p class=MsoNormal><span lang=EN-US style='font-size:7.5pt;font-family:
4047 Arial'>Makes the individual components of the statements stand out.
4048 Enhances readability. It is difficult to give a complete list of the
4049 suggested use of whitespace in C++ code. The examples above however should
4050 give a general idea of the intentions. <o:p></o:p></span></p>
4051 </td>
4052 </tr>
4053 </table>
4054 <!--
4055 ****************************************************************************
4056 Rule
4057 ****************************************************************************
4058 -->
4059 <p style='margin:0cm;margin-bottom:.0001pt'><span lang=EN-US
4060 style='display:none;mso-hide:all'><o:p>&nbsp;</o:p></span><span lang=EN-US
4061 style='display:none;mso-hide:all'><o:p>&nbsp;</o:p></span></p>
4062 <table class=TableNormal border=1 cellpadding=0 width="100%"
4063 style='width:100.0%; mso-cellspacing:1.5pt; mso-padding-alt:0cm 5.4pt 0cm 5.4pt; margin-bottom: .0001pt;'>
4064 <tr style='mso-yfti-irow:0'>
4065 <td style='background:#BBCCEE;padding:.75pt .75pt .75pt .75pt'>
4066 <p class=MsoNormal><b><span lang=EN-US style='font-size:10.0pt;font-family:
4067 Arial'><!--
4068 ****************************************************************************
4069 Rule
4070 ****************************************************************************
4071 -->83. Logical units within a block should be separated by one blank line. <o:p></o:p></span></b></p>
4072 </td>
4073 </tr>
4074 <tr style='mso-yfti-irow:1'>
4075 <td style='padding:.75pt .75pt .75pt .75pt'>
4076 <p class=MsoNormal><span lang=EN-US style='font-size:10.0pt;font-family:
4077 Arial'><o:p>&nbsp;</o:p></span></p>
4078 </td>
4079 </tr>
4080 <tr style='mso-yfti-irow:2;mso-yfti-lastrow:yes'>
4081 <td style='padding:.75pt .75pt .75pt .75pt'>
4082 <p class=MsoNormal><span lang=EN-US style='font-size:7.5pt;font-family:
4083 Arial'>Enhance readability by introducing white space between logical units
4084 of a block. <o:p></o:p></span></p>
4085 </td>
4086 </tr>
4087 </table>
4088 <p style='margin:0cm;margin-bottom:.0001pt'><span lang=EN-US
4089 style='display:none;mso-hide:all'><o:p>&nbsp;</o:p></span><span lang=EN-US
4090 style='display:none;mso-hide:all'><o:p>&nbsp;</o:p></span></p>
4091 <table class=TableNormal border=1 cellpadding=0 width="100%"
4092 style='width:100.0%;mso-cellspacing:1.5pt;mso-padding-alt:0cm 5.4pt 0cm 5.4pt'>
4093 <tr style='mso-yfti-irow:0'>
4094 <td style='background:#BBCCEE;padding:.75pt .75pt .75pt .75pt'>
4095 <p class=MsoNormal><b><span lang=EN-US style='font-size:10.0pt;font-family:
4096 Arial'><!--
4097 ****************************************************************************
4098 Rule
4099 ****************************************************************************
4100 -->84. Variables in declarations should be left aligned. <o:p></o:p></span></b></p>
4101 </td>
4102 </tr>
4103 <tr style='mso-yfti-irow:1'>
4104 <td style='padding:.75pt .75pt .75pt .75pt'>
4105 <p class=MsoNormal><tt><span lang=EN-US style='font-size:10.0pt'>AsciiFile&nbsp;
4106 *file;</span></tt><span lang=EN-US style='font-size:10.0pt;font-family:
4107 fixed;mso-bidi-font-family:"Courier New"'><br>
4108 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
4109 nPoints;</span></tt><br>
4110 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>float&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
4111 x, y; </span></tt></span><span lang=EN-US style='font-size:10.0pt;
4112 font-family:Arial'><o:p></o:p></span></p>
4113 </td>
4114 </tr>
4115 <tr style='mso-yfti-irow:2;mso-yfti-lastrow:yes'>
4116 <td style='padding:.75pt .75pt .75pt .75pt'>
4117 <p class=MsoNormal><span lang=EN-US style='font-size:7.5pt;font-family:
4118 Arial'>Enhance readability. The variables are easier to spot from the types
4119 by alignment. <o:p></o:p></span></p>
4120 </td>
4121 </tr>
4122 </table>
4123 <p style='margin:0cm;margin-bottom:.0001pt'><span lang=EN-US
4124 style='display:none;mso-hide:all'><o:p>&nbsp;</o:p></span></p>
4125 <h3><a name=Comments_and_Documentation id="Comments_and_Documentation" and Documentation></a><span lang=EN-US>7 Comments and Documentation</span></h3>
4126 <h3><span lang=EN-US><span lang=EN-US><a name=Comment id="Comment"></a></span>7.1 Comment</span></h3>
4127 <!--
4128 ****************************************************************************
4129 Rule
4130 ****************************************************************************
4131 -->
4132 <p style='margin:0cm;margin-bottom:.0001pt'><span lang=EN-US
4133 style='display:none;mso-hide:all'><o:p>&nbsp;</o:p></span><span lang=EN-US
4134 style='display:none;mso-hide:all'><o:p>&nbsp;</o:p></span></p>
4135 <table class=TableNormal border=1 cellpadding=0 width="100%"
4136 style='width:100.0%;mso-cellspacing:1.5pt;mso-padding-alt:0cm 5.4pt 0cm 5.4pt'>
4137 <tr style='mso-yfti-irow:0'>
4138 <td style='background:#BBCCEE;padding:.75pt .75pt .75pt .75pt'>
4139 <p class=MsoNormal><b><span lang=EN-US style='font-size:10.0pt;font-family:
4140 Arial'>85. Use <i>//</i> for all comments, including multi-line comments. <o:p></o:p></span></b></p>
4141 </td>
4142 </tr>
4143 <tr style='mso-yfti-irow:1'>
4144 <td style='padding:.75pt .75pt .75pt .75pt'>
4145 <p class=MsoNormal><tt><span lang=EN-US style='font-size:10.0pt'>// Comment
4146 spanning</span></tt><span lang=EN-US style='font-size:10.0pt;font-family:
4147 fixed;mso-bidi-font-family:"Courier New"'><br>
4148 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>//
4149 more than one line. </span></tt></span><span lang=EN-US style='font-size:
4150 10.0pt;font-family:Arial'><o:p></o:p></span></p>
4151 </td>
4152 </tr>
4153 <tr style='mso-yfti-irow:2;mso-yfti-lastrow:yes'>
4154 <td style='padding:.75pt .75pt .75pt .75pt'>
4155 <p class=MsoNormal><span lang=EN-US style='font-size:7.5pt;font-family:
4156 Arial'>Since multilevel C-commenting is not supported, using // comments
4157 ensure that it is always possible to comment out entire sections of a file
4158 using /* */ for debugging purposes etc. <o:p></o:p></span></p>
4159 <p><span lang=EN-US>There should be a space between the &quot;//&quot; and
4160 the actual comment, and comments should always start with an upper case
4161 letter and end with a period. </span></p>
4162 </td>
4163 </tr>
4164 </table>
4165 <p style='margin:0cm;margin-bottom:.0001pt'><span lang=EN-US
4166 style='display:none;mso-hide:all'><o:p>&nbsp;</o:p></span></p>
4167 <table class=TableNormal border=1 cellpadding=0 width="100%"
4168 style='width:100.0%;mso-cellspacing:1.5pt;mso-padding-alt:0cm 5.4pt 0cm 5.4pt'>
4169 <tr style='mso-yfti-irow:0'>
4170 <td colspan="2" style='background:#BBCCEE;padding:.75pt .75pt .75pt .75pt'>
4171 <p class=MsoNormal><b><span lang=EN-US style='font-size:10.0pt;font-family:
4172 Arial'><!--
4173 ****************************************************************************
4174 Rule
4175 ****************************************************************************
4176 -->
4177 86. Comments should be included relative to their position in the code. [1] <o:p></o:p></span></b></p>
4178 </td>
4179 </tr>
4180 <tr style='mso-yfti-irow:1'>
4181 <td style='padding:.75pt .75pt .75pt .75pt'>
4182 <p class=MsoNormal><tt><span lang=EN-US style='font-size:10.0pt'>while
4183 (true) {</span></tt><span lang=EN-US style='font-size:10.0pt;
4184 font-family:fixed;mso-bidi-font-family:"Courier New"'><br>
4185 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>&nbsp;
4186 <span lang=EN-US style='font-size:10.0pt;
4187 font-family:fixed;mso-bidi-font-family:"Courier New"'><tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>&nbsp;</span></tt></span><span lang=EN-US style='font-size:10.0pt;
4188 font-family:fixed;mso-bidi-font-family:"Courier New"'><tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>&nbsp;</span></tt></span>// Do something</span></tt><br>
4189 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>&nbsp;
4190 <span lang=EN-US style='font-size:10.0pt;
4191 font-family:fixed;mso-bidi-font-family:"Courier New"'><tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>&nbsp;</span></tt></span><span lang=EN-US style='font-size:10.0pt;
4192 font-family:fixed;mso-bidi-font-family:"Courier New"'><tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>&nbsp;</span></tt></span>something();&nbsp;&nbsp;</span></tt><br>
4193 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>}</span></tt></span><span lang=EN-US style='font-size:10.0pt;font-family:
4194 Arial'><o:p></o:p></span></p>
4195 </td>
4196 <td bgcolor="#FDB5A6" style='padding:.75pt .75pt .75pt .75pt'><p class="MsoNormal"><tt><span lang=EN-US style='font-size:10.0pt'>while (true) {</span></tt><span lang=EN-US style='font-size:10.0pt;
4197 font-family:fixed;mso-bidi-font-family:"Courier New"'><br>
4198 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'> // Do something</span></tt><br>
4199 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'> <span lang=EN-US style='font-size:10.0pt;
4200 font-family:fixed;mso-bidi-font-family:"Courier New"'><tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>&nbsp;</span></tt></span><span lang=EN-US style='font-size:10.0pt;
4201 font-family:fixed;mso-bidi-font-family:"Courier New"'><tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>&nbsp;</span></tt></span><span lang=EN-US style='font-size:10.0pt;
4202 font-family:fixed;mso-bidi-font-family:"Courier New"'><tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>&nbsp;</span></tt></span><span lang=EN-US style='font-size:10.0pt;
4203 font-family:fixed;mso-bidi-font-family:"Courier New"'><tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>&nbsp;</span></tt></span>something();</span></tt><br>
4204 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>} </span></tt></span></p>
4205 <span class="MsoNormal"><span lang=EN-US style='font-size:10.0pt;font-family:
4206 Arial'><o:p></o:p></span></span></td>
4207 </tr>
4208 <tr style='mso-yfti-irow:2;mso-yfti-lastrow:yes'>
4209 <td colspan="2" style='padding:.75pt .75pt .75pt .75pt'>
4210 <p class=MsoNormal><span lang=EN-US style='font-size:7.5pt;font-family:
4211 Arial'>This is to avoid that the comments break the logical structure of
4212 the program. <o:p></o:p></span></p>
4213 </td>
4214 </tr>
4215 </table>
4216 <p style='margin:0cm;margin-bottom:.0001pt'><span lang=EN-US
4217 style='display:none;mso-hide:all'><o:p>&nbsp;</o:p></span></p>
4218 <h3><span lang=EN-US><!--
4219 ****************************************************************************
4220 Rule
4221 ****************************************************************************
4222 -->
4223 <span lang=EN-US><a name=Documentation></a></span>7.2 Documentation</span></h3>
4224 <table class=TableNormal border=1 cellpadding=0 width="100%"
4225 style='width:100.0%;mso-cellspacing:1.5pt;mso-padding-alt:0cm 5.4pt 0cm 5.4pt'>
4226 <tr style='mso-yfti-irow:0'>
4227 <td style='background:#BBCCEE;padding:.75pt .75pt .75pt .75pt'>
4228 <p class=MsoNormal><b><span lang=EN-US style='font-size:10.0pt;font-family:
4229 Arial'>87. Documentation style should follow Doxygen conventions<o:p></o:p></span></b></p>
4230 </td>
4231 </tr>
4232 <tr style='mso-yfti-irow:1'>
4233 <td style='padding:.75pt .75pt .75pt .75pt'>
4234 <p class=MsoNormal><span lang=EN-US style='font-size:10.0pt;font-family:
4235 Arial'><o:p>&nbsp;</o:p></span></p>
4236 </td>
4237 </tr>
4238 <tr style='mso-yfti-irow:2;mso-yfti-lastrow:yes'>
4239 <td style='padding:.75pt .75pt .75pt .75pt'>
4240 <p class=MsoNormal><span lang=EN-US style='font-size:7.5pt;font-family:
4241 Arial'>Regarding standardized class and method documentation the Java
4242 development community is far more mature than the C++. This is of course
4243 becuase Java includes a tool for extracting such comments and produce high
4244 quality hypertext documentation from it. <o:p></o:p></span></p>
4245 <p class=MsoNormal><span lang=EN-US style='font-size:7.5pt;font-family:
4246 Arial'><o:p>&nbsp;</o:p></span></p>
4247 <p class=MsoNormal><span lang=EN-US style='font-size:10.0pt;font-family:
4248 Arial'>There have never been a common convention for writing this kind of
4249 documentation in C++, so when choosing between inventing your own
4250 convention, and using an existing one, the latter option seem natural. As
4251 one of the most popular documentation tools for C++,</span><span
4252 lang=EN-US> <a href="http://www.stack.nl/~dimitri/doxygen/index.html"><span
4253 style='font-size:10.0pt;font-family:Arial'>Doxygen</span></a> </span><span
4254 lang=EN-US style='font-size:10.0pt;font-family:Arial'>become our primary
4255 choice. </span><span lang=EN-US style='font-size:7.5pt;font-family:Arial'><o:p></o:p></span></p>
4256 </td>
4257 </tr>
4258 </table>
4259 <p style='margin:0cm;margin-bottom:.0001pt'><span lang=EN-US
4260 style='display:none;mso-hide:all'><o:p>&nbsp;</o:p></span></p>
4261 <!--
4262 ****************************************************************************
4263 Rule
4264 ****************************************************************************
4265 -->
4266 <p style='margin:0cm;margin-bottom:.0001pt'><span lang=EN-US
4267 style='display:none;mso-hide:all'><o:p>&nbsp;</o:p></span></p>
4268 <table class=TableNormal border=1 cellpadding=0 width="100%"
4269 style='width:100.0%;mso-cellspacing:1.5pt;mso-padding-alt:0cm 5.4pt 0cm 5.4pt'>
4270 <tr style='mso-yfti-irow:0'>
4271 <td style='background:#BBCCEE;padding:.75pt .75pt .75pt .75pt'>
4272 <p class=MsoNormal><b><span lang=EN-US style='font-size:10.0pt;font-family:
4273 Arial'>88. </span></b><span lang=EN-US style='color:black; font-weight: bold; font-family: Arial, Helvetica, sans-serif; font-size: 10pt;'>Documentation
4274 block style</span><span class="style12"><span lang=EN-US style='font-size:10.0pt'><o:p></o:p></span></span><b><span lang=EN-US style='font-size:10.0pt;font-family:
4275 Arial'><o:p></o:p></span></b></p>
4276 </td>
4277 </tr>
4278 <tr style='mso-yfti-irow:1'>
4279 <td style='padding:.75pt .75pt .75pt .75pt'>
4280 <p class=MsoNormal><tt><span lang=EN-US style='font-size:10.0pt'>/**<o:p></o:p></span></tt></p>
4281 <p class=MsoNormal><tt><span lang=EN-US style='font-size:10.0pt'><span
4282 style='mso-spacerun:yes'> </span>*<span style='mso-spacerun:yes'>   </span>&#8230;
4283 text &#8230;<o:p></o:p></span></tt></p>
4284 <p class=MsoNormal><tt><span lang=EN-US style='font-size:10.0pt'><span
4285 style='mso-spacerun:yes'> </span>*/</span></tt><span lang=EN-US
4286 style='mso-bidi-font-family:Arial'><o:p></o:p></span></p>
4287 </td>
4288 </tr>
4289 <tr style='mso-yfti-irow:2;mso-yfti-lastrow:yes'>
4290 <td style='padding:.75pt .75pt .75pt .75pt'>
4291 <p class=MsoNormal><span lang=EN-US style='font-size:7.5pt;font-family:
4292 Arial'>In Doxygen, there are several valid way to mark a documentation
4293 block, we prefer the java style<span style='mso-spacerun:yes'>   </span><o:p></o:p></span></p>
4294 <p><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
4295 </td>
4296 </tr>
4297 </table>
4298 <p style='margin:0cm;margin-bottom:.0001pt'><span lang=EN-US
4299 style='display:none;mso-hide:all'><o:p>&nbsp;</o:p></span></p>
4300 <table class=TableNormal border=1 cellpadding=0 width="100%"
4301 style='width:100.0%;mso-cellspacing:1.5pt;mso-padding-alt:0cm 5.4pt 0cm 5.4pt'>
4302 <tr style='mso-yfti-irow:0'>
4303 <td style='background:#BBCCEE;padding:.75pt .75pt .75pt .75pt'>
4304 <p class=MsoNormal><b><span lang=EN-US style='font-size:10.0pt;font-family:
4305 Arial'><!--
4306 ****************************************************************************
4307 Rule
4308 ****************************************************************************
4309 -->
4310 89. <b><span lang=EN-US style='font-size:10.0pt;font-family:
4311 Arial'>@ tag convention </span></b><o:p> should be used </o:p></span></b></p> </td>
4312 </tr>
4313 <tr style='mso-yfti-irow:1'>
4314 <td style='padding:.75pt .75pt .75pt .75pt'>
4315 <p class=MsoNormal><tt><span lang=EN-US style='font-size:10.0pt'>@author<o:p></o:p></span></tt></p>
4316 <p class=MsoNormal><tt><span lang=EN-US style='font-size:10.0pt'>\authour</span></tt></p>
4317 </td>
4318 </tr>
4319 <tr style='mso-yfti-irow:2;mso-yfti-lastrow:yes'>
4320 <td style='padding:.75pt .75pt .75pt .75pt'>
4321 <p class=MsoNormal><span lang=EN-US style='font-size:7.5pt;font-family:
4322 Arial'>Doxygen support two kinds of tag conventions which begin with
4323 &#8220;\&#8221; or &#8220;@&#8221;. Both of them are equivalent, however,
4324 we prefer the java style <o:p></o:p></span></p>
4325 <p class=MsoNormal><span lang=EN-US style='font-size:7.5pt;font-family:
4326 Arial'><o:p></o:p></span></p>
4327 <p class=MsoNormal><o:p><span class="MsoNormal style7">One obviuos ex</span>ception is using Latex to represent formula </o:p></p></td>
4328 </tr>
4329 </table>
4330 <p style='margin:0cm'><span lang=EN-US
4331 style='display:none;mso-hide:all'><o:p></o:p></span><span lang=EN-US style='font-size:10.0pt;font-family:Arial;
4332 display:none;mso-hide:all'><o:p>&nbsp;</o:p></span></p>
4333 <table class=TableNormal border=1 cellpadding=0 width="100%"
4334 style='width:100.0%;mso-cellspacing:1.5pt;mso-padding-alt:0cm 5.4pt 0cm 5.4pt'>
4335 <tr style='mso-yfti-irow:0'>
4336 <td style='background:#BBCCEE;padding:.75pt .75pt .75pt .75pt'>
4337 <p class=MsoNormal><b><span lang=EN-US style='font-size:10.0pt;font-family:
4338 Arial'>
4339 <!--
4340 ****************************************************************************
4341 Rule
4342 ****************************************************************************
4343 -->
4344 90. <b>File Documentation </b><o:p></o:p></span></b></p></td>
4345 </tr>
4346 <tr style='mso-yfti-irow:1'>
4347 <td style='padding:.75pt .75pt .75pt .75pt'><p class=MsoNormal style4><tt><span lang=EN-US style='font-size:10.0pt'><o:p></o:p></span></tt></p>
4348 <p class=MsoNormal style4><tt><span lang=EN-US style='font-size:10.0pt'><o:p>/*<br>
4349 <tt><span lang=EN-US style='font-size:10.0pt'>&nbsp;</span></tt>* Copyright (C) 2000-2004 Object Oriented Parallel Simulation Engine (OOPSE) project<br>
4350 &nbsp;* <br>
4351 &nbsp;* Contact: oopse@oopse.org<br>
4352 &nbsp;* <br>
4353 &nbsp;* This program is free software; you can redistribute it and/or<br>
4354 &nbsp;* modify it under the terms of the GNU Lesser General Public License<br>
4355 &nbsp;* as published by the Free Software Foundation; either version 2.1<br>
4356 &nbsp;* of the License, or (at your option) any later version.<br>
4357 &nbsp;* All we ask is that proper credit is given for our work, which includes<br>
4358 &nbsp;* - but is not limited to - adding the above copyright notice to the beginning<br>
4359 &nbsp;* of your source code files, and to any copyright notice that you may distribute<br>
4360 &nbsp;* with programs based on this work.<br>
4361 &nbsp;* <br>
4362 &nbsp;* This program is distributed in the hope that it will be useful,<br>
4363 &nbsp;* but WITHOUT ANY WARRANTY; without even the implied warranty of<br>
4364 &nbsp;* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the<br>
4365 &nbsp;* GNU Lesser General Public License for more details.<br>
4366 &nbsp;* <br>
4367 &nbsp;* You should have received a copy of the GNU Lesser General Public License<br>
4368 &nbsp;* along with this program; if not, write to the Free Software<br>
4369 &nbsp;* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.<br>
4370 &nbsp;*<br>
4371 &nbsp;*/</o:p></span></tt></p>
4372 <p> /**<br>
4373 &nbsp;* @file StringTokenizer.hpp<br>
4374 &nbsp;* @author tlin<br>
4375 &nbsp;* @date 09/20/2004<br>
4376 &nbsp;* @time 11:30am<br>
4377 &nbsp;* @version 1.0<br>
4378 &nbsp;*/<tt><span lang=EN-US style='font-size:10.0pt'><o:p><tt><span lang=EN-US style='font-size:10.0pt'><o:p></o:p></span></tt></o:p></span></tt></p> </td>
4379 </tr>
4380 <tr style='mso-yfti-irow:2;mso-yfti-lastrow:yes'>
4381 <td style='padding:.75pt .75pt .75pt .75pt'>
4382 <p class=MsoNormal><o:p></o:p></p>
4383 </td>
4384 </tr>
4385 </table>
4386 <p style='margin:0cm;margin-bottom:.0001pt'><span lang=EN-US
4387 style='display:none;mso-hide:all'><o:p>&nbsp;</o:p></span></p>
4388 <table class=TableNormal border=1 cellpadding=0 width="100%"
4389 style='width:100.0%;mso-cellspacing:1.5pt;mso-padding-alt:0cm 5.4pt 0cm 5.4pt'>
4390 <tr style='mso-yfti-irow:0'>
4391 <td style='background:#BBCCEE;padding:.75pt .75pt .75pt .75pt'>
4392 <p class=MsoNormal><b><span lang=EN-US style='font-size:10.0pt;font-family:
4393 Arial'>
4394 91. Variable (include class member variable, struct member variable, union member variable and enum member variable) should be documented right after its declaration <o:p></o:p></span></b></p></td>
4395 </tr>
4396 <tr style='mso-yfti-irow:1'>
4397 <td style='padding:.75pt .75pt .75pt .75pt'>
4398 <p class=MsoNormal><tt><span lang=EN-US style='font-size:10.0pt'>vector&lt;int&gt;::iterator i;<span
4399 style='mso-spacerun:yes'>&nbsp;</span>/**&lt; iterator */ <o:p></o:p></span></tt></p>
4400 <p class=MsoNormal><span
4401 lang=EN-US style='font-family:Arial'><o:p></o:p></span></p></td>
4402 </tr>
4403 <tr style='mso-yfti-irow:2;mso-yfti-lastrow:yes'>
4404 <td style='padding:.75pt .75pt .75pt .75pt'>
4405 <p class=MsoNormal>Although Doxygen support several kinds of variable documentation, we prefer /**&lt; ... */ </p></td>
4406 </tr>
4407 </table>
4408 <p style='margin:0cm;margin-bottom:.0001pt'><span lang=EN-US
4409 style='display:none;mso-hide:all'><o:p>&nbsp;</o:p></span></p>
4410 <p style='margin:0cm;margin-bottom:.0001pt'>
4411 <table class=TableNormal border=1 cellpadding=0 width="100%"
4412 style='width:100.0%;mso-cellspacing:1.5pt;mso-padding-alt:0cm 5.4pt 0cm 5.4pt'>
4413 <tr style='mso-yfti-irow:0'>
4414 <td style='background:#BBCCEE;padding:.75pt .75pt .75pt .75pt'>
4415 <p class=MsoNormal><b><span lang=EN-US style='font-size:10.0pt;font-family:
4416 Arial'>
4417 92. Class, Struct, Union, typedef and function (include class member function) should be documented right before their declaration <o:p></o:p></span></b></p></td>
4418 </tr>
4419 <tr style='mso-yfti-irow:1'>
4420 <td style='padding:.75pt .75pt .75pt .75pt'>
4421 <p class=MsoNormal><span
4422 lang=EN-US style='font-family:Arial'><o:p></o:p></span></p>
4423 </td>
4424 </tr>
4425 <tr style='mso-yfti-irow:2;mso-yfti-lastrow:yes'>
4426 <td style='padding:.75pt .75pt .75pt .75pt'>
4427 <p class=MsoNormal>&nbsp;</p></td>
4428 </tr>
4429 </table>
4430 <p style='margin:0cm;margin-bottom:.0001pt'><span lang=EN-US
4431 style='display:none;mso-hide:all'><o:p>&nbsp;</o:p></span></p>
4432 <table class=TableNormal border=1 cellpadding=0 width="100%"
4433 style='width:100.0%;mso-cellspacing:1.5pt;mso-padding-alt:0cm 5.4pt 0cm 5.4pt'>
4434 <tr style='mso-yfti-irow:0'>
4435 <td style='background:#BBCCEE;padding:.75pt .75pt .75pt .75pt'>
4436 <p class=MsoNormal><b><span lang=EN-US style='font-size:10.0pt;font-family:
4437 Arial'>
4438 <!--
4439 ****************************************************************************
4440 Rule
4441 ****************************************************************************
4442 -->
4443 93. <b>Class Documentation</b><o:p></o:p></span></b></p></td>
4444 </tr>
4445 <tr style='mso-yfti-irow:1'>
4446 <td style='padding:.75pt .75pt .75pt .75pt'>
4447 <p class=MsoNormal><tt><span lang=EN-US style='font-size:10.0pt'><o:p></o:p></span></tt><tt> </tt></p>
4448 <p class="style4"> /**<br>
4449 &nbsp;* @class StringTokenizer StringTokenizer.hpp &quot;util/StringTokenizer.hpp&quot;<br>
4450 &nbsp;*<br>
4451 &nbsp;* @brief The string tokenizer class allows an application to break a string into tokens<br>
4452 &nbsp;*<br>
4453 &nbsp;* The set of delimiters (the characters that separate tokens) may be specified either <br>
4454 &nbsp;* at creation time or on a per-token basis. <br>
4455 &nbsp;* An instance of StringTokenizer behaves in one of two ways, depending on whether it was <br>
4456 &nbsp;* created with the returnTokens flag having the value true or false.<br>
4457 &nbsp;*/<br>
4458 class StringTokenizer{<br>
4459 <br>
4460 &nbsp;&nbsp;&nbsp;&nbsp;public:<br>
4461 <br>
4462 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/**<br>
4463 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;* Constructs a string tokenizer for the specified string. The characters in the delim argument<br>
4464 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;* are the delimiters for separating tokens. characters are skipped and only serve as <br>
4465 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;* separators between tokens.<br>
4466 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;* @param str a string to be parsed.<br>
4467 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;* @param delim the delimiters, default value is &quot;\t\n\r&quot;.<br>
4468 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/<br>
4469 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;StringTokenizer(const std::string &amp;str, const std::string &amp;delim = &quot;\t\n\r&quot;);</p>
4470 <p class="style4">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /**<br>
4471 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;* Constructs a string tokenizer for the specified string. The characters in the delim argument<br>
4472 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;* are the delimiters for separating tokens. <br>
4473 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;* If the returnTokens flag is true, then the delimiter characters are also returned as tokens. <br>
4474 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;* Each delimiter is returned as a string of length one. If the flag is false, the delimiter <br>
4475 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;* characters are skipped and only serve as separators between tokens.<br>
4476 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;* @param str a string to be parsed. <br>
4477 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;* @param delim the delimiters. <br>
4478 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;* @param returnTokens flag indicating whether to return the delimiters as tokens.<br>
4479 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/<br>
4480 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;StringTokenizer(const std::string&amp; str, const std::string&amp; delim, bool returnTokens);</p>
4481 <p class="style4">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/**<br>
4482 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;* Calculates the number of times that this tokenizer's nextToken method can be called <br>
4483 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;* before it generates an exception.<br>
4484 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*<br>
4485 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;* @return the number of tokens remaining in the string using the current delimiter set.<br>
4486 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/<br>
4487 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int countTokens();</p>
4488 <p class="style4">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/**<br>
4489 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;* Tests if there are more tokens available from this tokenizer's string.<br>
4490 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*<br>
4491 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;* @return true if there are more tokens available from this tokenizer's string, false otherwise<br>
4492 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/<br>
4493 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bool hasMoreTokens();</p>
4494 <p class="style4">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/**<br>
4495 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;* Returns the next token from this string tokenizer.<br>
4496 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*<br>
4497 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;* @return the next token from this string tokenizer.<br>
4498 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*<br>
4499 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;* @exception NoSuchElementException if there are no more tokens in this tokenizer's string<br>
4500 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/<br>
4501 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;std::string nextToken();</p>
4502 <p class="style4">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/**<br>
4503 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;* Returns the next token in this string tokenizer's string. The new delimiter set remains the<br>
4504 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;* default after this call.<br>
4505 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*<br>
4506 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;* @param newDelim the new delimiters.<br>
4507 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*<br>
4508 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;* @return the next token, after switching to the new delimiter set.<br>
4509 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*<br>
4510 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;* @exception NoSuchElementException if there are no more tokens in this tokenizer's string.<br>
4511 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*<br>
4512 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/<br>
4513 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;std::string nextToken(const std::string&amp; newDelim); </p>
4514 <p class="style4">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/**<br>
4515 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;* Returns the current delimiter set of this string tokenizer<br>
4516 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*<br>
4517 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;* @return the current delimiter set<br>
4518 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/<br>
4519 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;std::string getDelimiter();</p>
4520 <p class="style4">&nbsp;&nbsp;&nbsp;&nbsp;private:<br>
4521 <br>
4522 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/**<br>
4523 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;* Test if character is in current delimiter set.<br>
4524 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*<br>
4525 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;* @param c character to be tested<br>
4526 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*<br>
4527 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;* @return true if character is in current delimiter set, flase otherwise.<br>
4528 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/<br>
4529 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bool isDelimiter(char c);<br>
4530 <br>
4531 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;std::string delim_; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/**&lt; current delimiter set of this string tokenizer */</p>
4532 <p class="style4">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bool returnTokens_; &nbsp;&nbsp;&nbsp;&nbsp;/**&lt; flag indicating whether to return the delimiters as tokens */<br>
4533 };</p>
4534 </td>
4535 </tr>
4536 <tr style='mso-yfti-irow:2;mso-yfti-lastrow:yes'>
4537 <td style='padding:.75pt .75pt .75pt .75pt'>
4538 <p class=MsoNormal><o:p></o:p></p>
4539 </td>
4540 </tr>
4541 </table>
4542 <p style='margin:0cm;margin-bottom:.0001pt'><span lang=EN-US
4543 style='display:none;mso-hide:all'><o:p>&nbsp;</o:p></span></p>
4544 <table class=TableNormal border=1 cellpadding=0 width="100%"
4545 style='width:100.0%;mso-cellspacing:1.5pt;mso-padding-alt:0cm 5.4pt 0cm 5.4pt'>
4546 <tr style='mso-yfti-irow:0'>
4547 <td style='background:#BBCCEE;padding:.75pt .75pt .75pt .75pt'>
4548 <p class=MsoNormal><b><span lang=EN-US style='font-size:10.0pt;font-family:
4549 Arial'>
4550 94. struct documentation <o:p></o:p></span></b></p></td>
4551 </tr>
4552 <tr style='mso-yfti-irow:1'>
4553 <td style='padding:.75pt .75pt .75pt .75pt'>
4554 <p class=MsoNormal>&nbsp;</p>
4555 <p class=MsoNormal><tt><span lang=EN-US style='font-size:10.0pt'>/**</span></tt></p>
4556 <p class=MsoNormal><tt><span class="style10"> &nbsp;* @struct Employee </span></tt></p>
4557 <p class=MsoNormal><tt><span class="style10">&nbsp;* @brief Employee struct contains some properties of an employee object </span></tt></p>
4558 <p class=MsoNormal><tt><span class="style10">&nbsp;* detail description </span></tt></p> <p class=MsoNormal><tt><span lang=EN-US style='font-size:10.0pt'>&nbsp;*/</span></tt> </p> <p class=MsoNormal><tt><span lang=EN-US style='font-size:10.0pt'>struct Employee {</span></tt></p>
4559 <p class=MsoNormal><tt><span lang=EN-US style='font-size:10.0pt'> <tt><span lang=EN-US style='font-size:10.0pt'><span
4560 style='mso-spacerun:yes'>&nbsp;&nbsp;&nbsp;&nbsp;</span></span></tt>int id; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/**&lt; employee indentification number */ <o:p></o:p></span></tt></p>
4561 <p class=MsoNormal><tt><span lang=EN-US style='font-size:10.0pt'><span
4562 style='mso-spacerun:yes'>&nbsp;&nbsp;&nbsp;&nbsp;</span>string firstName;<span
4563 style='mso-spacerun:yes'>&nbsp;&nbsp;</span>/**&lt; first name */ <o:p></o:p></span></tt></p>
4564 <p class=MsoNormal><tt><span lang=EN-US style='font-size:10.0pt'><tt><span lang=EN-US style='font-size:10.0pt'><span
4565 style='mso-spacerun:yes'>&nbsp;&nbsp;&nbsp;&nbsp;</span></span></tt>string lastName;<span
4566 style='mso-spacerun:yes'>&nbsp;</span> /**&lt; last name */ <o:p></o:p></span></tt></p>
4567 <p class=MsoNormal><tt><span lang=EN-US style='font-size:10.0pt'><tt><span lang=EN-US style='font-size:10.0pt'><span
4568 style='mso-spacerun:yes'>&nbsp;&nbsp;&nbsp;&nbsp;</span></span></tt>string title;<o:p></o:p></span></tt><tt><span lang=EN-US style='font-size:10.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;<tt><span lang=EN-US style='font-size:10.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></tt>/**&lt; job title */ </span></tt></p>
4569 <p class=MsoNormal><tt><span lang=EN-US style='font-size:10.0pt'>}<o:p>;</o:p></span></tt><span
4570 lang=EN-US style='font-family:Arial'><o:p></o:p></span></p>
4571 </td>
4572 </tr>
4573 <tr style='mso-yfti-irow:2;mso-yfti-lastrow:yes'>
4574 <td style='padding:.75pt .75pt .75pt .75pt'>
4575 <p class=MsoNormal>&nbsp;</p></td>
4576 </tr>
4577 </table>
4578 <p style='margin:0cm;margin-bottom:.0001pt'><span lang=EN-US
4579 style='display:none;mso-hide:all'><o:p>&nbsp;</o:p></span></p>
4580 <table class=TableNormal border=1 cellpadding=0 width="100%"
4581 style='width:100.0%;mso-cellspacing:1.5pt;mso-padding-alt:0cm 5.4pt 0cm 5.4pt'>
4582 <tr style='mso-yfti-irow:0'>
4583 <td style='background:#BBCCEE;padding:.75pt .75pt .75pt .75pt'>
4584 <p class=MsoNormal><b><span lang=EN-US style='font-size:10.0pt;font-family:Arial'>
4585 95. union documentation <o:p></o:p></span></b></p></td>
4586 </tr>
4587 <tr style='mso-yfti-irow:1'>
4588 <td style='padding:.75pt .75pt .75pt .75pt'>
4589 <p class=MsoNormal><tt><span lang=EN-US style='font-size:10.0pt'>/**</span></tt></p>
4590 <p class=MsoNormal><tt><span class="style10"> &nbsp;* @union <tt><span lang=EN-US style='font-size:10.0pt'>Parameter</span></tt></span></tt></p>
4591 <p class=MsoNormal><tt><span class="style10">&nbsp;* @brief ...</span></tt></p>
4592 <p class=MsoNormal><tt><span class="style10">&nbsp;* detail description </span></tt></p>
4593 <p class=MsoNormal><tt><span lang=EN-US style='font-size:10.0pt'>&nbsp;*/</span></tt> </p>
4594 <p class=MsoNormal><tt><span lang=EN-US style='font-size:10.0pt'>union Parameter {</span></tt></p>
4595 <p class=MsoNormal><tt><span lang=EN-US style='font-size:10.0pt'> <tt><span lang=EN-US style='font-size:10.0pt'><span
4596 style='mso-spacerun:yes'>&nbsp;&nbsp;&nbsp;&nbsp;</span></span></tt>int intVar; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/**&lt; integer parameter */ <o:p></o:p></span></tt></p>
4597 <p class=MsoNormal><tt><span lang=EN-US style='font-size:10.0pt'><span
4598 style='mso-spacerun:yes'>&nbsp;&nbsp;&nbsp;&nbsp;</span>float floatVar;<span
4599 style='mso-spacerun:yes'>&nbsp;&nbsp;</span>/**&lt; float parameter */ <o:p></o:p></span></tt></p>
4600 <p class=MsoNormal><tt><span lang=EN-US style='font-size:10.0pt'><tt><span lang=EN-US style='font-size:10.0pt'><span
4601 style='mso-spacerun:yes'>&nbsp;&nbsp;&nbsp;&nbsp;</span></span></tt>string strVar;<span
4602 style='mso-spacerun:yes'> &nbsp;</span> /**&lt; string paramter */ <o:p></o:p></span></tt></p>
4603 <p class=MsoNormal><tt><span lang=EN-US style='font-size:10.0pt'>}<o:p>;</o:p></span></tt><span
4604 lang=EN-US style='font-family:Arial'><o:p></o:p></span></p>
4605 <p class=MsoNormal><span
4606 lang=EN-US style='font-family:Arial'><o:p></o:p></span></p></td>
4607 </tr>
4608 <tr style='mso-yfti-irow:2;mso-yfti-lastrow:yes'>
4609 <td style='padding:.75pt .75pt .75pt .75pt'>
4610 <p class=MsoNormal>&nbsp;</p></td>
4611 </tr>
4612 </table>
4613 <p style='margin:0cm;margin-bottom:.0001pt'><span lang=EN-US
4614 style='display:none;mso-hide:all'><o:p>&nbsp;</o:p></span></p>
4615 <table class=TableNormal border=1 cellpadding=0 width="100%"
4616 style='width:100.0%;mso-cellspacing:1.5pt;mso-padding-alt:0cm 5.4pt 0cm 5.4pt'>
4617 <tr style='mso-yfti-irow:0'>
4618 <td style='background:#BBCCEE;padding:.75pt .75pt .75pt .75pt'>
4619 <p class=MsoNormal><b><span lang=EN-US style='font-size:10.0pt;font-family:Arial'>
4620 96. enum documentation <o:p></o:p></span></b></p></td>
4621 </tr>
4622 <tr style='mso-yfti-irow:1'>
4623 <td style='padding:.75pt .75pt .75pt .75pt'>
4624 <p class=MsoNormal><tt><span lang=EN-US style='font-size:10.0pt'><o:p></o:p>/**</span></tt></p>
4625 <p class=MsoNormal><tt><span class="style10"> &nbsp;* @enum Color</span></tt></p>
4626 <p class=MsoNormal><tt><span class="style10">&nbsp;* @brief ...</span></tt></p>
4627 <p class=MsoNormal><tt><span class="style10">&nbsp;* detail description </span></tt></p>
4628 <p class=MsoNormal><tt><span lang=EN-US style='font-size:10.0pt'>&nbsp;*/</span></tt> </p> <p class=MsoNormal><tt><span lang=EN-US style='font-size:10.0pt'>enum Color {</span></tt><span lang=EN-US style='font-size:10.0pt;font-family:fixed;
4629 mso-bidi-font-family:"Courier New"'><br>
4630 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;COLOR_RED,</span></tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/**&lt; red color */ <br>
4631 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;COLOR_GREEN,</span></tt> /**&lt; green color */ <br>
4632 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;COLOR_BLUE</span></tt> <span lang=EN-US style='font-size:10.0pt;font-family:fixed;
4633 mso-bidi-font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;</span>/**&lt; blue color */ <br>
4634 <tt><span style='mso-ansi-font-size:10.0pt;mso-bidi-font-size:10.0pt'>}; </span></tt></span><span
4635 lang=EN-US style='font-size:10.0pt;font-family:Arial'><o:p></o:p></span><span
4636 lang=EN-US style='font-family:Arial'><o:p></o:p></span></p> </td>
4637 </tr>
4638 <tr style='mso-yfti-irow:2;mso-yfti-lastrow:yes'>
4639 <td style='padding:.75pt .75pt .75pt .75pt'>
4640 <p class=MsoNormal>&nbsp;</p></td>
4641 </tr>
4642 </table>
4643 <p style='margin:0cm;margin-bottom:.0001pt'><span lang=EN-US
4644 style='display:none;mso-hide:all'><o:p>&nbsp;</o:p></span></p>
4645 <table class=TableNormal border=1 cellpadding=0 width="100%"
4646 style='width:100.0%;mso-cellspacing:1.5pt;mso-padding-alt:0cm 5.4pt 0cm 5.4pt'>
4647 <tr style='mso-yfti-irow:0'>
4648 <td style='background:#BBCCEE;padding:.75pt .75pt .75pt .75pt'>
4649 <p class=MsoNormal><b><span lang=EN-US style='font-size:10.0pt;font-family:Arial'>
4650 97. typedef documentation <o:p></o:p></span></b></p></td>
4651 </tr>
4652 <tr style='mso-yfti-irow:1'>
4653 <td style='padding:.75pt .75pt .75pt .75pt'>
4654 <p class=MsoNormal><span
4655 lang=EN-US style='font-family:Arial'><o:p></o:p></span><tt><span lang=EN-US style='font-size:10.0pt'>/**</span></tt></p>
4656 <p class=MsoNormal><tt><span class="style10"> &nbsp;* @typedef IntVector </span></tt></p>
4657 <p class=MsoNormal><tt><span class="style10">&nbsp;* @brief ...</span></tt></p>
4658 <p class=MsoNormal><tt><span class="style10">&nbsp;* detail description </span></tt></p>
4659 <p class=MsoNormal><tt><span lang=EN-US style='font-size:10.0pt'>&nbsp;*/</span></tt> </p>
4660 <p class=MsoNormal><tt><span lang=EN-US style='font-size:10.0pt'>typedef std::vector&lt;int&gt; IntVector;</span></tt><span
4661 lang=EN-US style='font-family:Arial'><o:p></o:p></span></p> </td>
4662 </tr>
4663 <tr style='mso-yfti-irow:2;mso-yfti-lastrow:yes'>
4664 <td style='padding:.75pt .75pt .75pt .75pt'>
4665 <p class=MsoNormal>&nbsp;</p></td>
4666 </tr>
4667 </table>
4668 <p style='margin:0cm;margin-bottom:.0001pt'><span lang=EN-US
4669 style='display:none;mso-hide:all'><o:p>&nbsp;</o:p></span></p>
4670 <table class=TableNormal border=1 cellpadding=0 width="100%"
4671 style='width:100.0%;mso-cellspacing:1.5pt;mso-padding-alt:0cm 5.4pt 0cm 5.4pt'>
4672 <tr style='mso-yfti-irow:0'>
4673 <td style='background:#BBCCEE;padding:.75pt .75pt .75pt .75pt'>
4674 <p class=MsoNormal><b><span lang=EN-US style='font-size:10.0pt;font-family:Arial'>
4675 98. function documentation <o:p></o:p></span></b></p></td>
4676 </tr>
4677 <tr style='mso-yfti-irow:1'>
4678 <td style='padding:.75pt .75pt .75pt .75pt'>
4679 <p class=MsoNormal><tt><span lang=EN-US style='font-size:10.0pt'><o:p></o:p></span></tt><tt><span lang=EN-US style='font-size:10.0pt'><o:p>/**</o:p></span></tt></p>
4680 <p class=MsoNormal><tt><span lang=EN-US style='font-size:10.0pt'><o:p>&nbsp;*&nbsp;@fn int open(const char *pathname,int flags)<br/>
4681 &nbsp;*&nbsp;@brief opens a file descriptor. <br/>
4682 &nbsp;*&nbsp;@param pathname the name of the descriptor. <br/>
4683 &nbsp;*&nbsp;@param flags opening flags.</o:p></span></tt></p>
4684 <p class=MsoNormal><tt><span lang=EN-US style='font-size:10.0pt'><o:p> &nbsp;*&nbsp;@return <tt><span lang=EN-US style='font-size:10.0pt'>descriptor</span></tt> of the file, return -1 if error<br/>
4685 &nbsp;*/ </o:p></span></tt></p> <p class=MsoNormal><tt><span lang=EN-US style='font-size:10.0pt'><o:p><tt><span lang=EN-US style='font-size:10.0pt'> int open(const char *pathname,int flags)</span></tt></o:p>;</span></tt><span
4686 lang=EN-US style='font-family:Arial'><o:p></o:p></span></p>
4687 </td>
4688 </tr>
4689 <tr style='mso-yfti-irow:2;mso-yfti-lastrow:yes'>
4690 <td style='padding:.75pt .75pt .75pt .75pt'>
4691 <p class=MsoNormal>&nbsp;</p></td>
4692 </tr>
4693 </table>
4694 <p style='margin:0cm;margin-bottom:.0001pt'><span lang=EN-US
4695 style='display:none;mso-hide:all'><o:p>&nbsp;</o:p></span></p>
4696 <table class=TableNormal border=1 cellpadding=0 width="100%"
4697 style='width:100.0%;mso-cellspacing:1.5pt;mso-padding-alt:0cm 5.4pt 0cm 5.4pt'>
4698 <tr style='mso-yfti-irow:0'>
4699 <td style='background:#BBCCEE;padding:.75pt .75pt .75pt .75pt'>
4700 <p class=MsoNormal><b><span lang=EN-US style='font-size:10.0pt;font-family:Arial'>
4701 99. template function documentation <o:p></o:p></span></b></p></td>
4702 </tr>
4703 <tr style='mso-yfti-irow:1'>
4704 <td style='padding:.75pt .75pt .75pt .75pt'>
4705 <p class=MsoNormal><tt><span lang=EN-US style='font-size:10.0pt'><o:p></o:p></span></tt><tt><span lang=EN-US style='font-size:10.0pt'><o:p>/**</o:p></span></tt></p>
4706 <p class=MsoNormal><tt><span lang=EN-US style='font-size:10.0pt'><o:p>&nbsp;*&nbsp;@fn <span lang=EN-US style='font-size:10.0pt;font-family:
4707 Arial'><span
4708 lang=EN-US style='font-size:10.0pt;font-family:fixed;mso-bidi-font-family:
4709 "Courier New"'><span lang=EN-US style='font-size:10.0pt;font-family:
4710 Arial'><span
4711 lang=EN-US style='font-size:10.0pt;font-family:fixed;mso-bidi-font-family:
4712 "Courier New"'>template &lt;typename T&gt;</span></span> inline const T&amp; max (const T &amp;a, const T &amp;b)</span></span><br/>
4713 &nbsp;*&nbsp;@brief
4714
4715
4716 Compares two objects and returns the larger of the two
4717
4718 . <br/>
4719 &nbsp;*&nbsp;@template T object type. <br/>
4720 &nbsp;*&nbsp;@param a first parameter. <br/>
4721 &nbsp;*&nbsp;@param b second parameter.</o:p></span></tt></p>
4722 <p class=MsoNormal><tt><span lang=EN-US style='font-size:10.0pt'><o:p> &nbsp;*&nbsp;@return the larger object<br/>
4723 &nbsp;*/ </o:p></span></tt></p>
4724 <p class=MsoNormal><span lang=EN-US style='font-size:10.0pt;font-family:
4725 Arial'><o:p><span
4726 lang=EN-US style='font-size:10.0pt;font-family:fixed;mso-bidi-font-family:
4727 "Courier New"'>template &lt;typename T&gt;</span></o:p></span></p>
4728 <p class=MsoNormal><span lang=EN-US style='font-size:10.0pt;font-family:
4729 Arial'><o:p><span
4730 lang=EN-US style='font-size:10.0pt;font-family:fixed;mso-bidi-font-family:
4731 "Courier New"'>inline const T&amp; max (const T &amp;a, const T &amp;b);</span></o:p></span><tt><span lang=EN-US style='font-size:10.0pt'><o:p></o:p></span></tt><span
4732 lang=EN-US style='font-family:Arial'><o:p></o:p></span></p>
4733 </td>
4734 </tr>
4735 <tr style='mso-yfti-irow:2;mso-yfti-lastrow:yes'>
4736 <td style='padding:.75pt .75pt .75pt .75pt'>
4737 <p class=MsoNormal>&nbsp;</p></td>
4738 </tr>
4739 </table>
4740 <p style='margin:0cm;margin-bottom:.0001pt'><span lang=EN-US
4741 style='display:none;mso-hide:all'><o:p>&nbsp;</o:p></span></p>
4742 <table class=TableNormal border=1 cellpadding=0 width="100%"
4743 style='width:100.0%;mso-cellspacing:1.5pt;mso-padding-alt:0cm 5.4pt 0cm 5.4pt'>
4744 <tr style='mso-yfti-irow:0'>
4745 <td style='background:#BBCCEE;padding:.75pt .75pt .75pt .75pt'>
4746 <p class=MsoNormal><b><span lang=EN-US style='font-size:10.0pt;font-family:Arial'>
4747 100. template class documentation <o:p></o:p></span></b></p></td>
4748 </tr>
4749 <tr style='mso-yfti-irow:1'>
4750 <td style='padding:.75pt .75pt .75pt .75pt'>
4751 <p class=MsoNormal><tt><span lang=EN-US style='font-size:10.0pt'><o:p></o:p></span></tt><tt><span lang=EN-US style='font-size:10.0pt'><o:p>/**</o:p></span></tt></p>
4752 <p class=MsoNormal><tt><span lang=EN-US style='font-size:10.0pt'><o:p>&nbsp;*&nbsp;@class Stack<br/>
4753 &nbsp;*&nbsp;@brief template stack class.<br/>
4754 &nbsp;*&nbsp; detail description.<br/>
4755 &nbsp;*&nbsp;@template T element type. </o:p></span></tt><tt><span lang=EN-US style='font-size:10.0pt'><o:p><br/>
4756 &nbsp;*/ </o:p></span></tt></p>
4757 <p class=MsoNormal><tt><span lang=EN-US style='font-size:10.0pt'><o:p> template &lt;typename T&gt;</o:p></span></tt></p>
4758 <p class=MsoNormal><tt><span lang=EN-US style='font-size:10.0pt'><o:p>class Stack {</o:p></span></tt></p>
4759 <p class=MsoNormal><tt><span lang=EN-US style='font-size:10.0pt'><o:p>&nbsp;&nbsp;&nbsp;&nbsp;public: </o:p></span></tt></p>
4760 <p class=MsoNormal><tt><span lang=EN-US style='font-size:10.0pt'><o:p></o:p></span></tt></p> <p class=MsoNormal><tt><span lang=EN-US style='font-size:10.0pt'><o:p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;void push(const T&amp; elem ); <br>
4761 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;void pop();<br/>
4762 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;T top() const;</o:p></span></tt></p>
4763 <p class=MsoNormal><tt><span lang=EN-US style='font-size:10.0pt'><o:p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bool empty() const ; </o:p></span></tt></p>
4764 <p class=MsoNormal><tt><span lang=EN-US style='font-size:10.0pt'><o:p></o:p></span></tt></p> <p class=MsoNormal><tt><span lang=EN-US style='font-size:10.0pt'><o:p><tt><span lang=EN-US style='font-size:10.0pt'> </span></tt></o:p></span></tt><span
4765 lang=EN-US style='font-family:Arial'><o:p><tt><span lang=EN-US style='font-size:10.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;private:</span></tt></o:p></span></p>
4766 <p class=MsoNormal><span
4767 lang=EN-US style='font-family:Arial'><o:p><tt><span lang=EN-US style='font-size:10.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;std::vector&lt;T&gt; elems_; <br/>
4768 };
4769 </span></tt></o:p></span></p>
4770 <p class=MsoNormal>&nbsp;</p></td>
4771 </tr>
4772 <tr style='mso-yfti-irow:2;mso-yfti-lastrow:yes'>
4773 <td style='padding:.75pt .75pt .75pt .75pt'>
4774 <p class=MsoNormal>&nbsp;</p></td>
4775 </tr>
4776 </table> <p style='margin-bottom:12.0pt'><span lang=EN-US><br style='mso-special-character:
4777 line-break'>
4778 <![if !supportLineBreakNewLine]><br style='mso-special-character:line-break'>
4779 <![endif]></span></p>
4780 <p style='margin-bottom:12.0pt'><span lang=EN-US><br style='mso-special-character:
4781 line-break'>
4782 <![if !supportLineBreakNewLine]><br style='mso-special-character:line-break'>
4783 <![endif]></span></p>
4784 <h2><a name=References></a><span lang=EN-US>8 References </span></h2>
4785 <p><a name=ref1></a><span lang=EN-US>[1] Code Complete, Steve McConnel -
4786 Microsoft Press </span></p>
4787 <p><a name=ref2></a><span lang=EN-US>[2] Programming in C++, Rules and
4788 Recommendations, M Henricson, e. Nyquist,&nbsp; Ellemtel (Swedish telecom) <br>
4789 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a
4790 href="http://www.doc.ic.ac.uk/lab/cplus/c++.rules/">http://www.doc.ic.ac.uk/lab/cplus/c++.rules/</a>
4791 </span></p>
4792 <p><a name=ref3></a><span lang=EN-US>[3] Wildfire C++ Programming Style, Keith
4793 Gabryelski, Wildfire Communications Inc. <br>
4794 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a
4795 href="http://www.wildfire.com/~ag/Engineering/Development/C++Style/">http://www.wildfire.com/~ag/Engineering/Development/C++Style/</a>
4796 </span></p>
4797 <p><a name=ref4></a><span lang=EN-US>[4] C++ Coding Standard, Todd Hoff <br>
4798 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a
4799 href="http://www.possibility.com/Cpp/CppCodingStandard.html">http://www.possibility.com/Cpp/CppCodingStandard.html</a>
4800 </span></p>
4801 <p style='margin-bottom:12.0pt'><a name=ref5></a><span lang=FR
4802 style='mso-ansi-language:FR'>[5] Doxygen documentation system <br>
4803 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span lang=EN-US><a
4804 href="http://www.stack.nl/~dimitri/doxygen/index.html"><span lang=FR
4805 style='mso-ansi-language:FR'>http://www.stack.nl/~dimitri/doxygen/index.html</span></a></span><!--
4806 *******************************************************************************
4807 Footer common for all pages
4808 *******************************************************************************
4809 --><span lang=FR style='mso-ansi-language:FR'><o:p></o:p></span></p>
4810 <div class=MsoNormal align=center style='text-align:center'><span lang=EN-US
4811 style='font-size:10.0pt;font-family:Arial'>
4812 <hr size=1 width="100%" align=center>
4813 </span></div>
4814 <p class=MsoNormal><span lang=EN-US style='font-size:10.0pt;font-family:Arial'><o:p></o:p></span></p>
4815 </td>
4816 </tr>
4817 <tr style='mso-yfti-irow:1;mso-yfti-lastrow:yes'>
4818 <td style='padding:6.0pt 6.0pt 6.0pt 6.0pt'>
4819 <h1><span lang=EN-US><o:p>&nbsp;</o:p></span></h1>
4820 </td>
4821 </tr>
4822 </table>
4823
4824 <p class=MsoNormal><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
4825
4826 </div>
4827
4828 </body>
4829
4830 </html>

Properties

Name Value
svn:executable *