author | Mathieu Lacage <mathieu.lacage@sophia.inria.fr> |
Fri, 25 Aug 2006 09:02:29 +0200 | |
changeset 4 | 287d6f27ee2d |
child 5 | df268610ad73 |
permissions | -rw-r--r-- |
4
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
1 |
\documentclass[11pt]{article} |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
2 |
\usepackage{times} |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
3 |
\setlength{\textwidth}{6.5in} |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
4 |
\setlength{\textheight}{9in} |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
5 |
\setlength{\oddsidemargin}{0.0in} |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
6 |
\setlength{\evensidemargin}{0.0in} |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
7 |
\setlength{\topmargin}{-0.5in} |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
8 |
\def\nst{{\em ns--3}} |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
9 |
\begin{document} |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
10 |
\begin{center} |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
11 |
{\Large Coding Standard for ns--3}\\ |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
12 |
Revision A \\ |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
13 |
August 22, 2005 |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
14 |
|
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
15 |
\end{center} |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
16 |
\section{Introduction} |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
17 |
This document describes the coding standard to be used by the \nst\ |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
18 |
project. All contributed software for \nst\ should follow this |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
19 |
style, which will result in consistent and easy to read code. A set |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
20 |
of emacs macros and a emacs startup file will be provided to assist |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
21 |
with creating software following this standard. |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
22 |
|
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
23 |
\section{Standards} |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
24 |
\subsection{General} |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
25 |
\begin{enumerate} |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
26 |
\item There will be no {\em tab} characters in the code. Rather, repeated |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
27 |
spaces are used to separate the characters as needed. |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
28 |
\item No line of code will be longer than 80 characters in length, to |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
29 |
prevent lines wrapping in the {\tt emacs} or {\tt vi} editors. For both |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
30 |
of these linux text editing tools, the default is a window that is |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
31 |
exactly 80 characters wide, so if none of the lines wrap when editing |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
32 |
in {\tt emacs} or {\tt vi} this requirement is met. |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
33 |
|
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
34 |
\item Each C++ statement will be on a separate line. The only exception |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
35 |
is when an {\tt if}, {\tt else}, {\tt for} or {\tt while} |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
36 |
statement has a single |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
37 |
statement sub--block these can be on the same line. |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
38 |
|
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
39 |
Examples: |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
40 |
|
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
41 |
\begin{tt} |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
42 |
int i = 0; // Right\\ |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
43 |
i = 10; j = 20; // Wrong. Two statements same line\\ |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
44 |
Sub1(k); Sub2(k); // Wrong. Two statements same line\\ |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
45 |
if (done) break; // Right. If statement with single statement sub-block |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
46 |
\end{tt} |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
47 |
|
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
48 |
\item Each variable declaration will be on a separate line. |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
49 |
|
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
50 |
Examples: |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
51 |
|
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
52 |
\begin{tt} |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
53 |
\begin{tabbing} |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
54 |
int c, d; \=// Wrong. c and d defined on same line.\\ |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
55 |
int a = 0; \\ |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
56 |
int b = 0; \>// Right. a and b on different lines\\ |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
57 |
\end{tabbing} |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
58 |
\end{tt} |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
59 |
|
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
60 |
\item Variables should be declared at the point in the code |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
61 |
where they are needed, and should be assigned an initial value |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
62 |
at the time of declaration. |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
63 |
|
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
64 |
\begin{tt} |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
65 |
\begin{tabbing} |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
66 |
int a = 0; \=// Right, a is assigned in initial value.\\ |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
67 |
int b; \> Wrong, b is not assigned an initial value.\\ |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
68 |
int c = 0; \\ |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
69 |
int d = Sub1(a, b);\\ |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
70 |
c = Sub2(d); \> // Wrong, c should be declared here, not above |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
71 |
\end{tabbing} |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
72 |
\end{tt} |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
73 |
|
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
74 |
\item Excepting when used in a {\tt switch} statement, the open |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
75 |
and close curly braces (\{ and \}) are always on a separate line. |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
76 |
|
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
77 |
Examples: |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
78 |
\begin{tt} |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
79 |
\begin{tabbing} |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
80 |
aa\=aa\=aa\= \kill |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
81 |
for (int i = 0; i < MAX\_COUNT; ++i) \\ |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
82 |
\>\{ // Right. Open brace on separate line \\ |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
83 |
\>\>sum += i; \\ |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
84 |
\>\>prod *= i; \\ |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
85 |
\>\} // Right. Close brace on separate line |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
86 |
\end{tabbing} |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
87 |
\end{tt} |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
88 |
|
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
89 |
\begin{tt} |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
90 |
\begin{tabbing} |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
91 |
aa\=aa\=aa\= \kill |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
92 |
for (int i = 0; i < 10; ++i) \{ // Wrong. Open brace on same line\\ |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
93 |
\>sum += i; \\ |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
94 |
\>prod *= i; \} // Wrong. Close brace on same line |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
95 |
\end{tabbing} |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
96 |
\end{tt} |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
97 |
|
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
98 |
\item The C++ {\tt goto} statement is not to be used. |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
99 |
\end{enumerate} |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
100 |
\subsection{Commenting} |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
101 |
In general, comments should be use liberally throughout the program to |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
102 |
increase readability. Specifically: |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
103 |
|
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
104 |
\begin{enumerate} |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
105 |
\item C++ style comments using the {\tt //} delimeter |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
106 |
are to be used, rather than C style comments with the {\tt /*} |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
107 |
and {\tt */} delimieters. |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
108 |
|
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
109 |
\item Variable declaration should have a short, one or two line comment |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
110 |
describing the purpose of the variable, unless it is a |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
111 |
local variable whose use is obvious from the context. The short |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
112 |
comment should be on the same line as the variable declaration, unless it |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
113 |
is too long, in which case it should be on the preceding lines. |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
114 |
|
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
115 |
Example: |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
116 |
|
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
117 |
\begin{tt} |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
118 |
int averageGrade; // Computed average grade for this project \\ |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
119 |
// Note. The above comment likely qualifies as \\ |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
120 |
// obvious from context, and could be omitted. |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
121 |
\\ |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
122 |
// Counts the total number of students completing the project, but\\ |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
123 |
// does not include those not turning in the project. \\ |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
124 |
int projectCount = 0; |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
125 |
\end{tt} |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
126 |
\item Every function should be preceded by a detailed comment block |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
127 |
describing what the function does, what the formal parameters are, and |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
128 |
what the return value is (if any). |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
129 |
|
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
130 |
\item Every class declaration should be preceded by a comment block |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
131 |
describing what the class is to be used for. |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
132 |
|
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
133 |
\item Unless obvious from context, each {\tt if} statement should |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
134 |
include a one--line comment on the open curly brace following describing |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
135 |
the {\tt TRUE} condition and the {\tt FALSE} condition. |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
136 |
|
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
137 |
Example: |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
138 |
|
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
139 |
\begin{tt} |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
140 |
\begin{tabbing} |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
141 |
aa\=aa\=aa\= \kill |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
142 |
if (iter == students.end()) \\ |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
143 |
\>\{ // Student not found, add him \\ |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
144 |
\>\>students.push\_back(thisStudent); \\ |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
145 |
\>\} \\ |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
146 |
else \\ |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
147 |
\>\{ // Student exists, modify existing data \\ |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
148 |
\>\>iter->grade += thisGrade; \\ |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
149 |
\>\} |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
150 |
\end{tabbing} |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
151 |
\end{tt} |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
152 |
\item Class and function comments should adhere to the Doxygen standard |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
153 |
format, for automated extraction by the Doxygen tool. {\em Note from |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
154 |
GFR. We need a bit more here, as Doxygen has several possible methods |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
155 |
for commenting. I'll look them over and suggest an approach, for later |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
156 |
discussion} |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
157 |
|
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
158 |
\end{enumerate} |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
159 |
\subsection{Naming Conventions} |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
160 |
\begin{enumerate} |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
161 |
\item {\bf Variable Names}. All variables, including global variables, |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
162 |
local variables, formal parameters, |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
163 |
and member variables in classes will start with a |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
164 |
lower case letter, and consist of only alphabetic characters and numeric |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
165 |
digits. Capital letters are to be used when appropriate between words |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
166 |
in a variable name for increased readability. |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
167 |
Variable names should not contain the underscore character. |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
168 |
The variable name should |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
169 |
be descriptive of the use of the variable, excepting for temporary |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
170 |
local variables where the function is obvious from the context (for example |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
171 |
loop index variables are commonly a single letter such as {\tt i}). |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
172 |
|
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
173 |
Examples: |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
174 |
|
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
175 |
{\tt int i;}\\ |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
176 |
{\tt int nextIndexValue;}\\ |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
177 |
{\tt int sum1;}\\ |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
178 |
{\tt int loopCount10;} |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
179 |
|
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
180 |
\item {\bf Subroutine Names}. All subroutine names, including global |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
181 |
routines and member functions in classes, will start with an upper case |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
182 |
letter, and consist of only alphabetic characters and numeric digits |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
183 |
(although digits should be rarely needed). |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
184 |
As in variable names, upper case letters are to be used between words as needed |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
185 |
to increase readability. |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
186 |
|
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
187 |
Examples: |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
188 |
|
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
189 |
{\tt int ComputeNextIterator()}\\ |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
190 |
{\tt int Calculate()}\\ |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
191 |
{\tt int TransmitPacket()}\\ |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
192 |
{\tt int Dummy()} |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
193 |
|
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
194 |
\item {\bf Defined Constants}. All defined constants will be all upper |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
195 |
case letters or numeric digits, with the underscore character separating |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
196 |
words. |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
197 |
|
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
198 |
Examples: |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
199 |
|
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
200 |
{\tt typedef enum \{ PACKET\_RX, PACKET\_FIRST\_BIT\_RX, PACKET\_TX\} }\\ |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
201 |
{\tt \#define NUMBER\_ELEMENTS 10}\\ |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
202 |
{\tt const int LOOP\_COUNT = 100} |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
203 |
|
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
204 |
\item {\bf Defined Types}. All user defined types will end start with |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
205 |
an upper case letter, consist of upper and lower case letters only, and |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
206 |
end in {\tt \_t}. |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
207 |
|
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
208 |
Examples: |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
209 |
|
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
210 |
{\tt typedef double Time\_t; // Simulation time}\\ |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
211 |
{\tt typedef unsigned long SimulatorUid\_t; // Unique ID for each event}\\ |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
212 |
{\tt typedef unsigned long Event\_t; // Idenifies events in handler}\\ |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
213 |
|
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
214 |
\item {\bf Class Names}. Class names will start with an upper case letter, |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
215 |
consist of only alphabetic characters, and include capital letters as |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
216 |
needed to increase readability. |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
217 |
|
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
218 |
Examples: |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
219 |
|
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
220 |
{\tt class DropTailQueue \{}\\ |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
221 |
{\tt class Ferrari \{}\\ |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
222 |
|
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
223 |
\end{enumerate} |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
224 |
|
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
225 |
%\newpage % Adjust as needed |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
226 |
\subsection{Statement Formatting} |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
227 |
\begin{enumerate} |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
228 |
\item {\bf Indention}. The basic indention level for all code |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
229 |
is four character positions. In some cases, indention to ``one--half'' |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
230 |
level, is required as described below. |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
231 |
\item {\bf Continuation statements}. Frequently a single statement |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
232 |
is too long to fit within a single 80 column line. In this case, the |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
233 |
statement is simply continued on the next one or more lines. Each |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
234 |
continuation line must be indented at least one--half indention level, |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
235 |
and more as necessary to increase readability. |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
236 |
|
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
237 |
Examples: |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
238 |
|
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
239 |
\begin{tt} |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
240 |
\begin{tabbing} |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
241 |
longVariableName = \=(anotherLongName * shorterName) + (loopIndex2 * i) + \\ |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
242 |
\>(k * j); // Correct, indented for neatness |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
243 |
\end{tabbing} |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
244 |
\end{tt} |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
245 |
|
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
246 |
\begin{tt} |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
247 |
\begin{tabbing} |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
248 |
a\=a\=a\= \kill |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
249 |
for (LongTypeName\_t longLoopIndexName = aLongExpression; \\ |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
250 |
\>longLoopIndexName < MAX\_VALUE; \\ |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
251 |
\>longLoopIndexName++) // Wrong, continuations not indented far enough |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
252 |
\end{tabbing} |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
253 |
\end{tt} |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
254 |
|
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
255 |
\begin{tt} |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
256 |
\begin{tabbing} |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
257 |
for (\=LongTypeName\_t longLoopIndexName = aLongExpression; \\ |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
258 |
\>longLoopIndexName < MAX\_VALUE; \\ |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
259 |
\>longLoopIndexName++) // Right, indented for readability |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
260 |
\end{tabbing} |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
261 |
\end{tt} |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
262 |
|
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
263 |
\item {\bf {\tt IF} Statements}. |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
264 |
The open curly brace following an {\tt IF} statement must be on the |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
265 |
following line, indented by one--half indention level. |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
266 |
The subsequent lines must |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
267 |
indented an additional one--half indention level. |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
268 |
{\tt IF} statements with only |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
269 |
one statement in either the {\tt TRUE} of {\tt FALSE} sub--blocks |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
270 |
may omit the curly braces. The {\tt ELSE} statement (if present) |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
271 |
must be on a line by itself. |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
272 |
|
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
273 |
Examples: |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
274 |
|
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
275 |
\begin{tt} |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
276 |
\begin{tabbing} |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
277 |
aa\=aa\=aa\= \kill |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
278 |
if (someCondition) \\ |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
279 |
\>\{ // Describe TRUE condition here\\ |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
280 |
\>\>i = k;\\ |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
281 |
\>\>k = i + 2;\\ |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
282 |
\>\} // Right, curly block indented one-half, statements one-half more |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
283 |
\end{tabbing} |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
284 |
\end{tt} |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
285 |
|
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
286 |
\begin{tt} |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
287 |
\begin{tabbing} |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
288 |
aa\=aa\=aa\= \kill |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
289 |
if (someCondition) \\ |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
290 |
\>\{ // Describe TRUE condition here\\ |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
291 |
\>\>i = k;\\ |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
292 |
\>\>k = i + 2;\\ |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
293 |
\>\} \\ |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
294 |
else // Right, ELSE statement on separate line, same indent as IF \\ |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
295 |
\>\{ // Describe FALSE condition here\\ |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
296 |
\>\>i = k * 2; \\ |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
297 |
\>\>k = i + 4; \\ |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
298 |
\>\} // Right, closing curly brace lined up with open brace |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
299 |
\end{tabbing} |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
300 |
\end{tt} |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
301 |
|
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
302 |
\begin{tt} |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
303 |
\begin{tabbing} |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
304 |
aa\=aa\=aa\= \kill |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
305 |
if (someCondition) // Describe TRUE condition here\\ |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
306 |
\>i = k; // Right, single line block need not have curly braces \\ |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
307 |
\end{tabbing} |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
308 |
\end{tt} |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
309 |
|
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
310 |
\begin{tt} |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
311 |
if (someCondition) i = k; // Right, single statement may be on same line |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
312 |
\end{tt} |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
313 |
|
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
314 |
\item {\bf {\tt FOR} Statements}. |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
315 |
The open brace following a {\tt for} statement is indented |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
316 |
one-half level from the {\tt for} statement itself. Each statement |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
317 |
in the sub--block is indented one--half level from the curly brace. |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
318 |
If the sub--block is a single statement, the curly braces can be |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
319 |
omitted and the statement indented one level, or optionally appear |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
320 |
on the same line as the {\tt for} statement. |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
321 |
|
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
322 |
Example: |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
323 |
|
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
324 |
\begin{tt} |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
325 |
\begin{tabbing} |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
326 |
aa\=aa\=aa\= \kill |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
327 |
for (int i = 0; i < MAX\_COUNT; ++i) \\ |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
328 |
\>\{ // Curly brace indented one-half level \\ |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
329 |
\>\>sum += i; // Statements indented another one-half level \\ |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
330 |
\>\>prod *= i; \\ |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
331 |
\>\} // Close brace on same column as open brace \\ |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
332 |
\end{tabbing} |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
333 |
\end{tt} |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
334 |
|
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
335 |
\begin{tt} |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
336 |
for (int i = 0; i < MAX\_COUNT; ++i) Sub1(i); // Right, single statement\\ |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
337 |
\end{tt} |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
338 |
|
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
339 |
\item {\bf {\tt WHILE} Statements}. |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
340 |
{\tt While} statements are formatted similarly to {\tt IF} statements, |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
341 |
with curly braces indented one-half level on separate lines, and the |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
342 |
inner statements indented another half-level. If the sub--block has only |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
343 |
a single line, the curly braces can be omitted, and the statement may |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
344 |
appear on the same line as the {\tt WHILE} statement. |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
345 |
|
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
346 |
Examples: |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
347 |
|
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
348 |
\begin{tt} |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
349 |
\begin{tabbing} |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
350 |
aa\=aa\=aa\= \kill |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
351 |
while (someCondition) \\ |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
352 |
\>\{ // Right, open brace indented one-half level \\ |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
353 |
\>\>i = k; // Right, statements indented one-half level from open brace \\ |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
354 |
\>\>k = i + 2;\\ |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
355 |
\>\} // Right, close brace lines up with open brace |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
356 |
\end{tabbing} |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
357 |
\end{tt} |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
358 |
|
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
359 |
\begin{tt} |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
360 |
while (someCondition) i = i + 2; // Right, single stmt on same line |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
361 |
\end{tt} |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
362 |
|
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
363 |
\item {\bf Infinite Loops}. |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
364 |
Any loop intended to be infinite (of course with a {\tt break} statement |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
365 |
somewhere) should be of the form: |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
366 |
|
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
367 |
\begin{tt} |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
368 |
while(true) \\ |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
369 |
{ // Loop until sentinel found\\ |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
370 |
...code here \\ |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
371 |
} |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
372 |
\end{tt} |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
373 |
|
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
374 |
\item {\bf {\tt SWITCH} Statements}. |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
375 |
The open curly brace for a {\tt switch} statement will be on the same |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
376 |
line as the {\tt switch} statement itself. Each {\tt case} statement |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
377 |
following is indented two columns from the switch statement. Each |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
378 |
statement in the {\tt case} block is indented two column from the |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
379 |
{\tt case} statement. The closing curly brace is on a separate line |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
380 |
by itself, indented two columns from the {\tt switch} statement. |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
381 |
|
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
382 |
Example: |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
383 |
|
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
384 |
\begin{tt} |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
385 |
\begin{tabbing} |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
386 |
aa\=aa\=aa\= \kill |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
387 |
switch(someCondition) \{ Right, open brace on same line as switch\\ |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
388 |
\>case 0 : // Right, case indented two columns from switch\\ |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
389 |
\>\>i = k; // Right, statements indented two columns from case \\ |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
390 |
\>\>k = i + 2;\\ |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
391 |
\>\>break;\\ |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
392 |
\>case 1 : // Right, case indented two columns from switch\\ |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
393 |
\>\>i = k + 2; // Right, statements indented two columns from case \\ |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
394 |
\>\>k = i + 4;\\ |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
395 |
\>\>break;\\ |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
396 |
\>\} // Right, close brace lines up with case statements |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
397 |
\end{tabbing} |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
398 |
\end{tt} |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
399 |
|
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
400 |
\item {\bf Functions}. Since C and C++ do not allow nested functions, |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
401 |
all functions start with no indentation at column 0. The open curly |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
402 |
brace is on a line by itself immediately following the function header |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
403 |
and formal parameters, also in column 0. Any local variable declarations |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
404 |
immediately following the open curly brace also start at column 0. |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
405 |
One blank line follows the initial local variable declarations (if any). |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
406 |
The statements in the function body are indented one-half level |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
407 |
from the curly brace. Any variable declarations after the start of the |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
408 |
statements are indented at the same level as the preceding statement. |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
409 |
The closing brace is at column 0. |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
410 |
|
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
411 |
Example: |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
412 |
|
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
413 |
\begin{tt} |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
414 |
\begin{tabbing} |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
415 |
aa\=aa\=aa\=aa\= \kill |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
416 |
void Function1(int arg1, double arg2)\\ |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
417 |
\{ // Right, curly brace at column 0\\ |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
418 |
int local1 = 0; // Right, local variable at column 0\\ |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
419 |
int local2;\\ |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
420 |
\>\\ |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
421 |
\>local2 = local1 + arg1 + arg2; // Right, indented two columns\\ |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
422 |
\>int local3; // Right, variable at same level\\ |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
423 |
\>local3 = Function2(local2);\\ |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
424 |
\>if (someCondition)\\ |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
425 |
\>\>\{\\ |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
426 |
\>\>\>local3 = 0;\\ |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
427 |
\>\>\>local2 = local1;\\ |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
428 |
\>\>\>int local4 = local1 + 1; // Right, variable at same level\\ |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
429 |
\>\>\>Function3(local4);\\ |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
430 |
\>\>\}\\ |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
431 |
\} // Right, close brace at column 0 |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
432 |
\end{tabbing} |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
433 |
\end{tt} |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
434 |
|
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
435 |
\item {\bf Expressions}. Spaces should be used liberally in expressions |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
436 |
to increase readability. One space before and after each operator, |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
437 |
excepting the increment and decrement operators, leads to easy--to--read |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
438 |
expressions. Continued expressions should be indented as far as needed |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
439 |
for neatness and readability. |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
440 |
|
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
441 |
Examples: |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
442 |
|
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
443 |
\begin{tt} |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
444 |
i = k * 2 + 3 / var1++; // Right, spacing separating terms \\ |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
445 |
\end{tt} |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
446 |
|
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
447 |
\begin{tt} |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
448 |
i = k*2+2/var1++; // Wrong, crowded together and hard to read |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
449 |
\end{tt} |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
450 |
|
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
451 |
\begin{tt} |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
452 |
\begin{tabbing} |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
453 |
someLongVariableName = \=anotherLongVariableName * shorterName + \\ |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
454 |
\>anotherName; // Right, indented to line up |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
455 |
\end{tabbing} |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
456 |
\end{tt} |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
457 |
|
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
458 |
\end{enumerate} |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
459 |
\subsection{Header Files} |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
460 |
\begin{enumerate} |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
461 |
\item All header files will have a file name ending with {\tt .h}. |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
462 |
\item All header files should have a one line comment describing |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
463 |
the purpose of the header, and comments identifying the |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
464 |
author and the (approximate) date the file was created. |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
465 |
|
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
466 |
Example: |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
467 |
|
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
468 |
\begin{tt} |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
469 |
// ns3 Network Simulator - TCP Base Class Declaration \\ |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
470 |
// George F. Riley. riley@ece.gatech.edu. \\ |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
471 |
// Georgia Tech, Fall 2006 |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
472 |
\end{tt} |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
473 |
|
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
474 |
\item All header files should have an ``include guard'' to prevent accidental |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
475 |
inclusion of the file multiple times in a single compilation unit. |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
476 |
|
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
477 |
Example: |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
478 |
|
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
479 |
\begin{tt} |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
480 |
\#ifndef \_\_tcp\_h\_\_ \\ |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
481 |
\#define \_\_tcp\_h\_\_ \\ |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
482 |
|
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
483 |
// (Contents of tcp.h here |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
484 |
|
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
485 |
\#endif |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
486 |
\end{tt} |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
487 |
\item Header files should avoid including other files whenever possible. |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
488 |
This can often be avoided with judicious use of the |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
489 |
{\tt class ClassName;} forward declaration. |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
490 |
|
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
491 |
Example: |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
492 |
|
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
493 |
\begin{tt} |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
494 |
// excerpt from application.h \\ |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
495 |
class L4Protocol; \\ |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
496 |
|
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
497 |
class Application \{ \\ |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
498 |
.... \\ |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
499 |
AddL4Proto(const L4Protocol\&); \\ |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
500 |
.... \\ |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
501 |
L4Protocol* l4Proto; \\ |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
502 |
\}; |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
503 |
\end{tt} |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
504 |
|
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
505 |
In the above example, the use of the forward declaration for {\tt L4Protocol} |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
506 |
obviates the need to include {\tt l4proto.h} in the application header |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
507 |
file. |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
508 |
|
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
509 |
\end{enumerate} |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
510 |
\subsection{Source Code Files} |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
511 |
\begin{enumerate} |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
512 |
\item All souce code files will have a file name ending with {\tt .cc}. |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
513 |
\item All source code files should have a one line comment describing |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
514 |
the purpose of the code, and comments identifying the |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
515 |
author and the (approximate) date the file was created. |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
516 |
|
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
517 |
Example: |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
518 |
|
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
519 |
\begin{tt} |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
520 |
// ns3 Network Simulator - TCP Base Class Implementation \\ |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
521 |
// George F. Riley. riley@ece.gatech.edu. \\ |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
522 |
// Georgia Tech, Fall 2006 |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
523 |
\end{tt} |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
524 |
|
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
525 |
\item All {\tt \#include} directives should be grouped with {\em system} |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
526 |
files listed first (eg. {\tt \#include <iostream>}), followed by |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
527 |
\nst\ defined files (eg. {\tt \#include "tcp.h"}). Within a group, |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
528 |
the includes should be sorted in alphabetical order. |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
529 |
|
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
530 |
Example: |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
531 |
|
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
532 |
\begin{tt} |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
533 |
\#include <iostream> \\ |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
534 |
\#include <list> \\ |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
535 |
\#include <vector> \\ |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
536 |
|
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
537 |
\#include "application.h" \\ |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
538 |
\#include "dumbbell.h" \\ |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
539 |
\#include "simulator.h" \\ |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
540 |
\#include "tcp.h.h" |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
541 |
|
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
542 |
\end{tt} |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
543 |
\end{enumerate} |
287d6f27ee2d
george's draft of a coding std
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
544 |
\end{document} |