Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
A
amdis
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Container Registry
Model registry
Operate
Environments
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
iwr
amdis
Commits
e78b6b50
Commit
e78b6b50
authored
14 years ago
by
Thomas Witkowski
Browse files
Options
Downloads
Patches
Plain Diff
Added code style directive.
parent
08a27a7c
No related branches found
Branches containing commit
No related tags found
Tags containing commit
No related merge requests found
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
doc/codeStyle.pdf
+0
-0
0 additions, 0 deletions
doc/codeStyle.pdf
doc/codeStyle.tex
+231
-0
231 additions, 0 deletions
doc/codeStyle.tex
with
231 additions
and
0 deletions
doc/codeStyle.pdf
0 → 100644
+
0
−
0
View file @
e78b6b50
File added
This diff is collapsed.
Click to expand it.
doc/codeStyle.tex
0 → 100644
+
231
−
0
View file @
e78b6b50
\documentclass
[a4paper]
{
article
}
\usepackage
{
amsmath
}
\usepackage
{
amssymb
}
\usepackage
{
amsfonts
}
\usepackage
{
listings
}
\title
{
AMDiS C++ code style directive
}
\author
{
Thomas Witkowski
}
\begin{document}
\maketitle
\section
{
General recommendations
}
\begin{enumerate}
\item
The main goal of this document is to assure a unique code style
in AMDiS. This should make the code more readable and easier to maintain.
\item
The code should be readable independently of any text editor and
IDE.
\item
Any violation to the guide is allowed if it enhances readability.
\item
Not all source files of AMDiS are already converted to this
style. If you are bored, you are free to do it.
\end{enumerate}
\section
{
Naming conventions
}
\begin{enumerate}
\item
All names should be written in English.
\item
Names representing types must be in mixed case string with upper case.
\begin{lstlisting}
{}
FiniteElemSpace, ProblemInstat
\end{lstlisting}
\item
Variable names must be in mixed case starting with lower case.
\begin{lstlisting}
{}
refinementManager, fileWriter
\end{lstlisting}
\item
Named constants (including enumeration values) must be all
uppercase using underscore to separate words.
\begin{lstlisting}
{}
CALL
_
LEAF
_
EL, GRD
_
PHI
\end{lstlisting}
\item
Names representing methods or functions must written in mixed
case starting with lower case.
\begin{lstlisting}
{}
refineMesh(), getTimestep()
\end{lstlisting}
\item
Abbreviations and acronyms must not be uppercase when used as
name.
\begin{lstlisting}
{}
getFeSpace() // NOT: getFESpace()
listDof // NOT: listDOF
\end{lstlisting}
\item
Do not use underscores to indicate variable scopes.
\item
The prefix n should be used for variables representing a number
of objects.
\begin{lstlisting}
{}
nPoints, nBasisFcts
\end{lstlisting}
\item
Naming pointers specifically should be avoided.
\begin{lstlisting}
{}
Line *line // NOT: Line *pLine
Element *el // NOT: Element *ptrEl
\end{lstlisting}
\end{enumerate}
\section
{
Files
}
\begin{enumerate}
\item
C++ header files should have the extension .h. Source files should
have the extension .cc.
\item
A class should be declared in a header file and defined in a
source file where the name of the files match the name of the class.
\item
All definitions should reside in source files. Usually, get- and
set-function can be excluded from this rule.
\item
File content must be kept within 85 columns.
\item
Include statements must be located at the top of a file only.
\end{enumerate}
\section
{
Statements
}
\begin{enumerate}
\item
Type conversions must always be done explicitly. Never rely on
implicit type conversion. Do not use C-style type conversion.
\begin{lstlisting}
{}
floatValue = static
_
cast<float>(intValue);
// NOT: floatValue = intValue;
// NOT: floatValue = (float)intValue;
\end{lstlisting}
\item
Variables should be declared where they are used for the first time.
\item
Variables should be initialized where they are declared.
\item
Use of global variables should be minimized.
\item
Class variables should never be declared public.
\item
Control variables in for() loops should be declared within the for-construction.
\begin{lstlisting}
{}
for (int i = 0; i < 10; i++)
// NOT:
int i;
for (i = 0; i < 10; i++)
\end{lstlisting}
\item
Complex conditional expressions must be avoided. Introduce
temporary boolean variables instead.
\item
The conditional should be put on a separate line.
\begin{lstlisting}
{}
if (isOkay) // NOT: if (isOkay) doIt();
doIt();
\end{lstlisting}
\item
Executable statements in conditionals must be avoided.
\item
Floating point constants should always be written with decimal
point and at least one decimal.
\begin{lstlisting}
{}
double total = 0.0; // NOT: double total = 0;
double speed = 3.0e8; // NOT: double speed = 3e8;
\end{lstlisting}
\end{enumerate}
\section
{
Layout
}
\begin{enumerate}
\item
Block layout should be as follows
\begin{lstlisting}
{}
if (isOkay)
{
doSomething();
...
}
else
{
doSomethingElse();
...
}
for ()
{
runCode();
...
}
\end{lstlisting}
\item
Single statement if-else, for or while statements can be written
without brackets.
\begin{lstlisting}
{}
for (int i = 0; i < 5; i++)
doSomething();
// NOT:
for (int i = 0; i < 5; i++)
{
doSomething();
}
\end{lstlisting}
\item
The class declarations should have the following form:
\begin{lstlisting}
{}
class SomeClass : public BaseClass
{
public:
...
protected:
...
private:
...
}
\end{lstlisting}
\item
Method definitions should have the following form:
\begin{lstlisting}
{}
void someMethod()
{
...
}
\end{lstlisting}
\item
General white spaces:
\begin{itemize}
\item
Conventional operators should be surrounded by a space character.
\item
C++ reserved words should be followed by a white space.
\item
Commas should be followed by a white space.
\item
Colons should be surrounded by white space.
\item
Semicolons in for statements should be followed by a space character.
\end{itemize}
\begin{lstlisting}
{}
a = (b + c) * d; // NOT: a=(b+c)*d
while (true) // NOT: while(true)
doSomething(a, b, c, d); // NOT: doSomething(a,b,c,d);
for (int i = 0; i < 10; i++)
{
// NOT: for(int i=0;i<10;i++)
{
\end{lstlisting}
\item
Methods should be separated by two blank lines.
\end{enumerate}
\section
{
Comments
}
\begin{enumerate}
\item
Tricky code should not be commented but rewritten!
\item
All comments should be written in English.
\item
Class and method header comments should follow the JavaDoc
conventions.
\end{enumerate}
\end{document}
\ No newline at end of file
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment