mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-12-22 05:16:21 +00:00
Update Development.lyx
This commit is contained in:
parent
61a80ab6d3
commit
14bcdb2bc7
@ -121,20 +121,18 @@ by the \SpecialChar LyX
|
|||||||
status collapsed
|
status collapsed
|
||||||
|
|
||||||
\begin_layout Plain Layout
|
\begin_layout Plain Layout
|
||||||
\noindent
|
If you have comments on or error corrections to this documentation, please
|
||||||
If you have comments or error corrections, please send them to the \SpecialChar LyX
|
send them to the \SpecialChar LyX
|
||||||
Documentatio
|
Documentation mailing list:
|
||||||
n mailing list,
|
\begin_inset CommandInset href
|
||||||
\begin_inset Flex Code
|
LatexCommand href
|
||||||
status collapsed
|
target "lyx-docs@lists.lyx.org"
|
||||||
|
type "mailto:"
|
||||||
\begin_layout Plain Layout
|
literal "false"
|
||||||
<lyx-docs@lists.lyx.org>
|
|
||||||
\end_layout
|
|
||||||
|
|
||||||
\end_inset
|
\end_inset
|
||||||
|
|
||||||
.
|
|
||||||
\end_layout
|
\end_layout
|
||||||
|
|
||||||
\end_inset
|
\end_inset
|
||||||
@ -5338,13 +5336,13 @@ These guidelines should save us a lot of work while cleaning up the code
|
|||||||
\end_layout
|
\end_layout
|
||||||
|
|
||||||
\begin_layout Itemize
|
\begin_layout Itemize
|
||||||
the most important rule first: KISS (Keep It Simple Stupid), always use
|
The most important rule first: KISS (Keep It Simple Stupid), always use
|
||||||
a simple implementation in favor of a more complicated one.
|
a simple implementation in favor of a more complicated one.
|
||||||
This eases maintenance a lot.
|
This eases maintenance a lot.
|
||||||
\end_layout
|
\end_layout
|
||||||
|
|
||||||
\begin_layout Itemize
|
\begin_layout Itemize
|
||||||
write good C++ code: Readable, well commented and taking advantage of the
|
Write good C++ code: readable, well commented, and taking advantage of the
|
||||||
OO model.
|
OO model.
|
||||||
Follow the formatting guidelines.
|
Follow the formatting guidelines.
|
||||||
See sec.
|
See sec.
|
||||||
@ -5365,20 +5363,20 @@ noprefix "false"
|
|||||||
\end_layout
|
\end_layout
|
||||||
|
|
||||||
\begin_layout Itemize
|
\begin_layout Itemize
|
||||||
adapt the code to the structures already existing in \SpecialChar LyX
|
Adapt the code to the structures already existing in \SpecialChar LyX
|
||||||
, or in the case that
|
, or in the case that
|
||||||
you have better ideas, discuss them on the developer's list before writing
|
you have better ideas, discuss them on the developer's list before writing
|
||||||
the code.
|
the code.
|
||||||
\end_layout
|
\end_layout
|
||||||
|
|
||||||
\begin_layout Itemize
|
\begin_layout Itemize
|
||||||
take advantage of the C++ standard library.
|
Take advantage of the C++ standard library.
|
||||||
Especially don't use custom containers when a standard container is usable;
|
Especially don't use custom containers when a standard container is usable;
|
||||||
learn to use the algorithms and functors in the standard library.
|
learn to use the algorithms and functors in the standard library.
|
||||||
\end_layout
|
\end_layout
|
||||||
|
|
||||||
\begin_layout Itemize
|
\begin_layout Itemize
|
||||||
be aware of exceptions and write exception safe code.
|
Be aware of exceptions and write exception safe code.
|
||||||
See sec.
|
See sec.
|
||||||
\begin_inset space ~
|
\begin_inset space ~
|
||||||
\end_inset
|
\end_inset
|
||||||
@ -5397,7 +5395,7 @@ noprefix "false"
|
|||||||
\end_layout
|
\end_layout
|
||||||
|
|
||||||
\begin_layout Itemize
|
\begin_layout Itemize
|
||||||
document all variables, methods, functions, classes etc.
|
Document all variables, methods, functions, classes etc.
|
||||||
We are using the source documentation program doxygen, a program that handles
|
We are using the source documentation program doxygen, a program that handles
|
||||||
javadoc syntax, to document sources.
|
javadoc syntax, to document sources.
|
||||||
You can download doxygen from:
|
You can download doxygen from:
|
||||||
@ -5415,7 +5413,7 @@ http://www.stack.nl/~dimitri/doxygen/
|
|||||||
\end_layout
|
\end_layout
|
||||||
|
|
||||||
\begin_layout Itemize
|
\begin_layout Itemize
|
||||||
we have certain code constructs that we try to follow.
|
We have certain code constructs that we try to follow.
|
||||||
See sec.
|
See sec.
|
||||||
\begin_inset space ~
|
\begin_inset space ~
|
||||||
\end_inset
|
\end_inset
|
||||||
@ -5447,11 +5445,19 @@ It is implicitly understood that all patches contributed to The \SpecialChar LyX
|
|||||||
.
|
.
|
||||||
Always discuss your ideas with the developers on the developer's mailing
|
Always discuss your ideas with the developers on the developer's mailing
|
||||||
list.
|
list.
|
||||||
When you create the patch, please use "
|
When you create the patch, please use
|
||||||
|
\begin_inset Quotes eld
|
||||||
|
\end_inset
|
||||||
|
|
||||||
|
|
||||||
\family typewriter
|
\family typewriter
|
||||||
diff -up
|
diff -up
|
||||||
\family default
|
\family default
|
||||||
" since we find that a lot easier to read than the other diff formats.
|
|
||||||
|
\begin_inset Quotes erd
|
||||||
|
\end_inset
|
||||||
|
|
||||||
|
since we find that a lot easier to read than the other diff formats.
|
||||||
Also please do not send patches that implements or fixes several different
|
Also please do not send patches that implements or fixes several different
|
||||||
things; several patches is a much better option.
|
things; several patches is a much better option.
|
||||||
We also require you to provide a commit message entry with every patch,
|
We also require you to provide a commit message entry with every patch,
|
||||||
@ -5475,20 +5481,47 @@ We have several guidelines on code constructs, some of these exist to make
|
|||||||
the code faster, others to make the code clearer.
|
the code faster, others to make the code clearer.
|
||||||
Yet others exist to allow us to take advantage of the strong type checking
|
Yet others exist to allow us to take advantage of the strong type checking
|
||||||
in C++.
|
in C++.
|
||||||
|
|
||||||
\end_layout
|
\end_layout
|
||||||
|
|
||||||
\begin_layout Itemize
|
\begin_layout Itemize
|
||||||
Declaration of variables should wait as long as possible.
|
Declaration of variables should wait as long as possible.
|
||||||
The rule is: "Don't declare it until you need it." In C++ there are a lot
|
The rule is:
|
||||||
of user defined types, and these can very often be expensive to initialize.
|
\begin_inset Quotes eld
|
||||||
|
\end_inset
|
||||||
|
|
||||||
|
Don't declare it until you need it.
|
||||||
|
\begin_inset Quotes erd
|
||||||
|
\end_inset
|
||||||
|
|
||||||
|
In C++ there are a lot of user defined types, and these can very often
|
||||||
|
be expensive to initialize.
|
||||||
This rule connects to the next rule too.
|
This rule connects to the next rule too.
|
||||||
|
|
||||||
\end_layout
|
\end_layout
|
||||||
|
|
||||||
\begin_layout Itemize
|
\begin_layout Itemize
|
||||||
Declare the variable as const if you don't need to change it.
|
Declare the variable as
|
||||||
This applies to POD types like int as well as classes.
|
\begin_inset Flex Code
|
||||||
|
status collapsed
|
||||||
|
|
||||||
|
\begin_layout Plain Layout
|
||||||
|
const
|
||||||
|
\end_layout
|
||||||
|
|
||||||
|
\end_inset
|
||||||
|
|
||||||
|
if you don't need to change it.
|
||||||
|
This applies to POD types like
|
||||||
|
\begin_inset Flex Code
|
||||||
|
status collapsed
|
||||||
|
|
||||||
|
\begin_layout Plain Layout
|
||||||
|
int
|
||||||
|
\end_layout
|
||||||
|
|
||||||
|
\end_inset
|
||||||
|
|
||||||
|
as well as classes.
|
||||||
|
|
||||||
\end_layout
|
\end_layout
|
||||||
|
|
||||||
@ -5498,7 +5531,17 @@ Make the scope of a variable as small as possible.
|
|||||||
|
|
||||||
\begin_layout Itemize
|
\begin_layout Itemize
|
||||||
Make good use of namespaces.
|
Make good use of namespaces.
|
||||||
Prefer anonymous namespaces to declaring "static" for file scope.
|
Prefer anonymous namespaces to declaring
|
||||||
|
\begin_inset Flex Code
|
||||||
|
status collapsed
|
||||||
|
|
||||||
|
\begin_layout Plain Layout
|
||||||
|
static
|
||||||
|
\end_layout
|
||||||
|
|
||||||
|
\end_inset
|
||||||
|
|
||||||
|
for file scope.
|
||||||
\end_layout
|
\end_layout
|
||||||
|
|
||||||
\begin_layout Itemize
|
\begin_layout Itemize
|
||||||
@ -5522,7 +5565,7 @@ Use:
|
|||||||
\begin_deeper
|
\begin_deeper
|
||||||
\begin_layout Standard
|
\begin_layout Standard
|
||||||
\begin_inset listings
|
\begin_inset listings
|
||||||
lstparams "basicstyle={\footnotesize},language={C++}"
|
lstparams "basicstyle={\ttfamily},showstringspaces=false,tabsize=4"
|
||||||
inline false
|
inline false
|
||||||
status open
|
status open
|
||||||
|
|
||||||
@ -5547,6 +5590,7 @@ Do not use:
|
|||||||
|
|
||||||
\begin_layout Standard
|
\begin_layout Standard
|
||||||
\begin_inset listings
|
\begin_inset listings
|
||||||
|
lstparams "basicstyle={\ttfamily},showstringspaces=false,tabsize=4"
|
||||||
inline false
|
inline false
|
||||||
status open
|
status open
|
||||||
|
|
||||||
@ -5583,6 +5627,7 @@ Use:
|
|||||||
\begin_deeper
|
\begin_deeper
|
||||||
\begin_layout Standard
|
\begin_layout Standard
|
||||||
\begin_inset listings
|
\begin_inset listings
|
||||||
|
lstparams "basicstyle={\ttfamily},showstringspaces=false,tabsize=4"
|
||||||
inline false
|
inline false
|
||||||
status open
|
status open
|
||||||
|
|
||||||
@ -5609,6 +5654,36 @@ for (Container::iterator it = large.begin(); it != end; ++it) {
|
|||||||
\end_inset
|
\end_inset
|
||||||
|
|
||||||
|
|
||||||
|
\end_layout
|
||||||
|
|
||||||
|
\begin_layout Standard
|
||||||
|
Or better (C++11):
|
||||||
|
\end_layout
|
||||||
|
|
||||||
|
\begin_layout Standard
|
||||||
|
\begin_inset listings
|
||||||
|
lstparams "basicstyle={\ttfamily},showstringspaces=false,tabsize=4"
|
||||||
|
inline false
|
||||||
|
status open
|
||||||
|
|
||||||
|
\begin_layout Plain Layout
|
||||||
|
|
||||||
|
for (auto const & it : large) {
|
||||||
|
\end_layout
|
||||||
|
|
||||||
|
\begin_layout Plain Layout
|
||||||
|
|
||||||
|
...;
|
||||||
|
\end_layout
|
||||||
|
|
||||||
|
\begin_layout Plain Layout
|
||||||
|
|
||||||
|
}
|
||||||
|
\end_layout
|
||||||
|
|
||||||
|
\end_inset
|
||||||
|
|
||||||
|
|
||||||
\end_layout
|
\end_layout
|
||||||
|
|
||||||
\begin_layout Standard
|
\begin_layout Standard
|
||||||
@ -5617,6 +5692,7 @@ Do not use:
|
|||||||
|
|
||||||
\begin_layout Standard
|
\begin_layout Standard
|
||||||
\begin_inset listings
|
\begin_inset listings
|
||||||
|
lstparams "basicstyle={\ttfamily},showstringspaces=false,tabsize=4"
|
||||||
inline false
|
inline false
|
||||||
status open
|
status open
|
||||||
|
|
||||||
@ -5652,7 +5728,27 @@ Plain Ol' Data type
|
|||||||
|
|
||||||
\end_inset
|
\end_inset
|
||||||
|
|
||||||
T, return T const instead.
|
|
||||||
|
\begin_inset Flex Code
|
||||||
|
status collapsed
|
||||||
|
|
||||||
|
\begin_layout Plain Layout
|
||||||
|
T
|
||||||
|
\end_layout
|
||||||
|
|
||||||
|
\end_inset
|
||||||
|
|
||||||
|
, return
|
||||||
|
\begin_inset Flex Code
|
||||||
|
status collapsed
|
||||||
|
|
||||||
|
\begin_layout Plain Layout
|
||||||
|
T const
|
||||||
|
\end_layout
|
||||||
|
|
||||||
|
\end_inset
|
||||||
|
|
||||||
|
instead.
|
||||||
This gives better type checking, and will give a compiler warning when
|
This gives better type checking, and will give a compiler warning when
|
||||||
temporaries are used wrongly.
|
temporaries are used wrongly.
|
||||||
\begin_inset Separator latexpar
|
\begin_inset Separator latexpar
|
||||||
@ -5668,12 +5764,13 @@ Use:
|
|||||||
|
|
||||||
\begin_layout Standard
|
\begin_layout Standard
|
||||||
\begin_inset listings
|
\begin_inset listings
|
||||||
|
lstparams "basicstyle={\ttfamily},showstringspaces=false,tabsize=4"
|
||||||
inline false
|
inline false
|
||||||
status open
|
status open
|
||||||
|
|
||||||
\begin_layout Plain Layout
|
\begin_layout Plain Layout
|
||||||
|
|
||||||
T const add(..);
|
T const add(...);
|
||||||
\end_layout
|
\end_layout
|
||||||
|
|
||||||
\end_inset
|
\end_inset
|
||||||
@ -5687,12 +5784,13 @@ Do not use:
|
|||||||
|
|
||||||
\begin_layout Standard
|
\begin_layout Standard
|
||||||
\begin_inset listings
|
\begin_inset listings
|
||||||
|
lstparams "basicstyle={\ttfamily},showstringspaces=false,tabsize=4"
|
||||||
inline false
|
inline false
|
||||||
status open
|
status open
|
||||||
|
|
||||||
\begin_layout Plain Layout
|
\begin_layout Plain Layout
|
||||||
|
|
||||||
T add(..);
|
T add(...);
|
||||||
\end_layout
|
\end_layout
|
||||||
|
|
||||||
\end_inset
|
\end_inset
|
||||||
@ -5709,6 +5807,7 @@ Avoid using the default cases in switch statements unless you have too.
|
|||||||
|
|
||||||
\begin_layout Itemize
|
\begin_layout Itemize
|
||||||
\begin_inset listings
|
\begin_inset listings
|
||||||
|
lstparams "basicstyle={\ttfamily},showstringspaces=false,tabsize=4"
|
||||||
inline false
|
inline false
|
||||||
status open
|
status open
|
||||||
|
|
||||||
@ -5911,6 +6010,7 @@ Use:
|
|||||||
|
|
||||||
\begin_layout Standard
|
\begin_layout Standard
|
||||||
\begin_inset listings
|
\begin_inset listings
|
||||||
|
lstparams "basicstyle={\ttfamily},showstringspaces=false,tabsize=4"
|
||||||
inline false
|
inline false
|
||||||
status open
|
status open
|
||||||
|
|
||||||
@ -5935,6 +6035,7 @@ Do not use:
|
|||||||
|
|
||||||
\begin_layout Standard
|
\begin_layout Standard
|
||||||
\begin_inset listings
|
\begin_inset listings
|
||||||
|
lstparams "basicstyle={\ttfamily},showstringspaces=false,tabsize=4"
|
||||||
inline false
|
inline false
|
||||||
status open
|
status open
|
||||||
|
|
||||||
@ -5958,6 +6059,7 @@ Use:
|
|||||||
|
|
||||||
\begin_layout Standard
|
\begin_layout Standard
|
||||||
\begin_inset listings
|
\begin_inset listings
|
||||||
|
lstparams "basicstyle={\ttfamily},showstringspaces=false,tabsize=4"
|
||||||
inline false
|
inline false
|
||||||
status open
|
status open
|
||||||
|
|
||||||
@ -5982,6 +6084,7 @@ Do not use:
|
|||||||
|
|
||||||
\begin_layout Standard
|
\begin_layout Standard
|
||||||
\begin_inset listings
|
\begin_inset listings
|
||||||
|
lstparams "basicstyle={\ttfamily},showstringspaces=false,tabsize=4"
|
||||||
inline false
|
inline false
|
||||||
status open
|
status open
|
||||||
|
|
||||||
@ -5996,16 +6099,42 @@ string a = "Lars", b = "Gullik"; // not used in LyX
|
|||||||
\end_layout
|
\end_layout
|
||||||
|
|
||||||
\begin_layout Standard
|
\begin_layout Standard
|
||||||
[Note that 'string a = "Lars"' is formally calling a copy constructor on
|
[Note that
|
||||||
a temporary constructed from a string literal and therefore has the potential
|
\begin_inset Flex Code
|
||||||
of being more expensive then direct construction by 'string a("Lars")'.
|
status collapsed
|
||||||
|
|
||||||
|
\begin_layout Plain Layout
|
||||||
|
string a = "Lars"
|
||||||
|
\end_layout
|
||||||
|
|
||||||
|
\end_inset
|
||||||
|
|
||||||
|
is formally calling a copy constructor on a temporary constructed from
|
||||||
|
a string literal and therefore has the potential of being more expensive
|
||||||
|
then direct construction by
|
||||||
|
\begin_inset Flex Code
|
||||||
|
status collapsed
|
||||||
|
|
||||||
|
\begin_layout Plain Layout
|
||||||
|
string a("Lars")
|
||||||
|
\end_layout
|
||||||
|
|
||||||
|
\end_inset
|
||||||
|
|
||||||
|
.
|
||||||
However the compiler is allowed to elide the copy (even if it had side
|
However the compiler is allowed to elide the copy (even if it had side
|
||||||
effects), and modern compilers typically do so.
|
effects), and modern compilers typically do so.
|
||||||
Given these equal costs, \SpecialChar LyX
|
Given these equal costs, \SpecialChar LyX
|
||||||
code favours the '=' idiom as it is in line with
|
code favours the '=' idiom as it is in line with
|
||||||
the traditional C-style initialization, _and_ cannot be mistaken as function
|
the traditional C-style initialization,
|
||||||
declaration, _and_ reduces the level of nested parantheses in more initializati
|
\emph on
|
||||||
ons.]
|
and
|
||||||
|
\emph default
|
||||||
|
cannot be mistaken as function declaration,
|
||||||
|
\emph on
|
||||||
|
and
|
||||||
|
\emph default
|
||||||
|
reduces the level of nested parentheses in more initializations.]
|
||||||
\end_layout
|
\end_layout
|
||||||
|
|
||||||
\end_deeper
|
\end_deeper
|
||||||
@ -6024,6 +6153,7 @@ Use:
|
|||||||
|
|
||||||
\begin_layout Standard
|
\begin_layout Standard
|
||||||
\begin_inset listings
|
\begin_inset listings
|
||||||
|
lstparams "basicstyle={\ttfamily},showstringspaces=false,tabsize=4"
|
||||||
inline false
|
inline false
|
||||||
status open
|
status open
|
||||||
|
|
||||||
@ -6048,6 +6178,7 @@ Do not use:
|
|||||||
|
|
||||||
\begin_layout Standard
|
\begin_layout Standard
|
||||||
\begin_inset listings
|
\begin_inset listings
|
||||||
|
lstparams "basicstyle={\ttfamily},showstringspaces=false,tabsize=4"
|
||||||
inline false
|
inline false
|
||||||
status open
|
status open
|
||||||
|
|
||||||
@ -6074,6 +6205,7 @@ Some time ago we had a huge discussion on this subject and after convincing
|
|||||||
|
|
||||||
\begin_layout Standard
|
\begin_layout Standard
|
||||||
\begin_inset listings
|
\begin_inset listings
|
||||||
|
lstparams "basicstyle={\ttfamily},showstringspaces=false,tabsize=4"
|
||||||
inline false
|
inline false
|
||||||
status open
|
status open
|
||||||
|
|
||||||
@ -6093,6 +6225,7 @@ and not
|
|||||||
|
|
||||||
\begin_layout Standard
|
\begin_layout Standard
|
||||||
\begin_inset listings
|
\begin_inset listings
|
||||||
|
lstparams "basicstyle={\ttfamily},showstringspaces=false,tabsize=4"
|
||||||
inline false
|
inline false
|
||||||
status open
|
status open
|
||||||
|
|
||||||
@ -6118,6 +6251,7 @@ Operator names and parentheses
|
|||||||
\begin_deeper
|
\begin_deeper
|
||||||
\begin_layout Standard
|
\begin_layout Standard
|
||||||
\begin_inset listings
|
\begin_inset listings
|
||||||
|
lstparams "basicstyle={\ttfamily},showstringspaces=false,tabsize=4"
|
||||||
inline false
|
inline false
|
||||||
status open
|
status open
|
||||||
|
|
||||||
@ -6137,6 +6271,7 @@ and not
|
|||||||
|
|
||||||
\begin_layout Standard
|
\begin_layout Standard
|
||||||
\begin_inset listings
|
\begin_inset listings
|
||||||
|
lstparams "basicstyle={\ttfamily},showstringspaces=false,tabsize=4"
|
||||||
inline false
|
inline false
|
||||||
status open
|
status open
|
||||||
|
|
||||||
@ -6167,6 +6302,7 @@ Function names and parentheses
|
|||||||
\begin_deeper
|
\begin_deeper
|
||||||
\begin_layout Standard
|
\begin_layout Standard
|
||||||
\begin_inset listings
|
\begin_inset listings
|
||||||
|
lstparams "basicstyle={\ttfamily},showstringspaces=false,tabsize=4"
|
||||||
inline false
|
inline false
|
||||||
status open
|
status open
|
||||||
|
|
||||||
@ -6186,6 +6322,7 @@ and not
|
|||||||
|
|
||||||
\begin_layout Standard
|
\begin_layout Standard
|
||||||
\begin_inset listings
|
\begin_inset listings
|
||||||
|
lstparams "basicstyle={\ttfamily},showstringspaces=false,tabsize=4"
|
||||||
inline false
|
inline false
|
||||||
status open
|
status open
|
||||||
|
|
||||||
@ -6211,6 +6348,7 @@ Enumerators
|
|||||||
\begin_deeper
|
\begin_deeper
|
||||||
\begin_layout Standard
|
\begin_layout Standard
|
||||||
\begin_inset listings
|
\begin_inset listings
|
||||||
|
lstparams "basicstyle={\ttfamily},showstringspaces=false,tabsize=4"
|
||||||
inline false
|
inline false
|
||||||
status open
|
status open
|
||||||
|
|
||||||
@ -6250,6 +6388,7 @@ and not
|
|||||||
|
|
||||||
\begin_layout Standard
|
\begin_layout Standard
|
||||||
\begin_inset listings
|
\begin_inset listings
|
||||||
|
lstparams "basicstyle={\ttfamily},showstringspaces=false,tabsize=4"
|
||||||
inline false
|
inline false
|
||||||
status open
|
status open
|
||||||
|
|
||||||
@ -6269,6 +6408,7 @@ and not
|
|||||||
|
|
||||||
\begin_layout Standard
|
\begin_layout Standard
|
||||||
\begin_inset listings
|
\begin_inset listings
|
||||||
|
lstparams "basicstyle={\ttfamily},showstringspaces=false,tabsize=4"
|
||||||
inline false
|
inline false
|
||||||
status open
|
status open
|
||||||
|
|
||||||
@ -6313,18 +6453,18 @@ Null pointers
|
|||||||
|
|
||||||
\begin_deeper
|
\begin_deeper
|
||||||
\begin_layout Standard
|
\begin_layout Standard
|
||||||
Using a plain 0 is always correct and least effort to type.
|
Use nullptr (C++11):
|
||||||
So:
|
|
||||||
\end_layout
|
\end_layout
|
||||||
|
|
||||||
\begin_layout Standard
|
\begin_layout Standard
|
||||||
\begin_inset listings
|
\begin_inset listings
|
||||||
|
lstparams "basicstyle={\ttfamily},showstringspaces=false,tabsize=4"
|
||||||
inline false
|
inline false
|
||||||
status open
|
status open
|
||||||
|
|
||||||
\begin_layout Plain Layout
|
\begin_layout Plain Layout
|
||||||
|
|
||||||
void * p = 0;
|
void * p = nullptr;
|
||||||
\end_layout
|
\end_layout
|
||||||
|
|
||||||
\end_inset
|
\end_inset
|
||||||
@ -6338,6 +6478,7 @@ and not
|
|||||||
|
|
||||||
\begin_layout Standard
|
\begin_layout Standard
|
||||||
\begin_inset listings
|
\begin_inset listings
|
||||||
|
lstparams "basicstyle={\ttfamily},showstringspaces=false,tabsize=4"
|
||||||
inline false
|
inline false
|
||||||
status open
|
status open
|
||||||
|
|
||||||
@ -6357,6 +6498,7 @@ and not
|
|||||||
|
|
||||||
\begin_layout Standard
|
\begin_layout Standard
|
||||||
\begin_inset listings
|
\begin_inset listings
|
||||||
|
lstparams "basicstyle={\ttfamily},showstringspaces=false,tabsize=4"
|
||||||
inline false
|
inline false
|
||||||
status open
|
status open
|
||||||
|
|
||||||
@ -6378,6 +6520,7 @@ and not
|
|||||||
|
|
||||||
\begin_layout Standard
|
\begin_layout Standard
|
||||||
\begin_inset listings
|
\begin_inset listings
|
||||||
|
lstparams "basicstyle={\ttfamily},showstringspaces=false,tabsize=4"
|
||||||
inline false
|
inline false
|
||||||
status open
|
status open
|
||||||
|
|
||||||
@ -6393,7 +6536,25 @@ void * p = 42 - 7 * 6; // not used in LyX
|
|||||||
|
|
||||||
\begin_layout Standard
|
\begin_layout Standard
|
||||||
Note: As an exception, imported third party code as well as code interfacing
|
Note: As an exception, imported third party code as well as code interfacing
|
||||||
the "native" APIs (src/support/os_*) can use NULL.
|
the
|
||||||
|
\begin_inset Quotes eld
|
||||||
|
\end_inset
|
||||||
|
|
||||||
|
native
|
||||||
|
\begin_inset Quotes erd
|
||||||
|
\end_inset
|
||||||
|
|
||||||
|
APIs (
|
||||||
|
\begin_inset Flex Code
|
||||||
|
status collapsed
|
||||||
|
|
||||||
|
\begin_layout Plain Layout
|
||||||
|
src/support/os_*
|
||||||
|
\end_layout
|
||||||
|
|
||||||
|
\end_inset
|
||||||
|
|
||||||
|
) can use NULL.
|
||||||
\end_layout
|
\end_layout
|
||||||
|
|
||||||
\end_deeper
|
\end_deeper
|
||||||
@ -6420,27 +6581,43 @@ Enums are named like Classes, values are usually in lower-case.
|
|||||||
\end_layout
|
\end_layout
|
||||||
|
|
||||||
\begin_layout Itemize
|
\begin_layout Itemize
|
||||||
Public API is camel-case ('
|
Public API functions are camel-case (
|
||||||
\family typewriter
|
\begin_inset Flex Code
|
||||||
|
status collapsed
|
||||||
|
|
||||||
|
\begin_layout Plain Layout
|
||||||
void setAFlagToAValue(bool)
|
void setAFlagToAValue(bool)
|
||||||
\family default
|
\end_layout
|
||||||
')
|
|
||||||
|
\end_inset
|
||||||
|
|
||||||
|
).
|
||||||
\end_layout
|
\end_layout
|
||||||
|
|
||||||
\begin_layout Itemize
|
\begin_layout Itemize
|
||||||
Members variables are underscored ('
|
Member variables are underscored (
|
||||||
\family typewriter
|
\begin_inset Flex Code
|
||||||
|
status collapsed
|
||||||
|
|
||||||
|
\begin_layout Plain Layout
|
||||||
enable_this_feature_flag_
|
enable_this_feature_flag_
|
||||||
\family default
|
\end_layout
|
||||||
') with a final '
|
|
||||||
\family typewriter
|
\end_inset
|
||||||
|
|
||||||
|
) with a final
|
||||||
|
\begin_inset Quotes eld
|
||||||
|
\end_inset
|
||||||
|
|
||||||
_
|
_
|
||||||
\family default
|
\begin_inset Quotes erd
|
||||||
'
|
\end_inset
|
||||||
|
|
||||||
|
.
|
||||||
\end_layout
|
\end_layout
|
||||||
|
|
||||||
\begin_layout Itemize
|
\begin_layout Itemize
|
||||||
Private/protected functions are also camel-case
|
Private/protected functions are also camel-case.
|
||||||
\end_layout
|
\end_layout
|
||||||
|
|
||||||
\begin_layout Itemize
|
\begin_layout Itemize
|
||||||
@ -6483,20 +6660,66 @@ name "Use-string-wherever"
|
|||||||
|
|
||||||
\end_inset
|
\end_inset
|
||||||
|
|
||||||
Use string wherever possible.
|
Use
|
||||||
\SpecialChar LyX
|
\begin_inset Flex Code
|
||||||
will someday move to Unicode, and that will be easy if everybody uses
|
status collapsed
|
||||||
string now.
|
|
||||||
Unicode strings should prefer using docstring instead of UTF-8 encoded
|
\begin_layout Plain Layout
|
||||||
std::string.
|
string
|
||||||
|
\end_layout
|
||||||
|
|
||||||
|
\end_inset
|
||||||
|
|
||||||
|
wherever possible.
|
||||||
|
Unicode strings should prefer using
|
||||||
|
\begin_inset Flex Code
|
||||||
|
status collapsed
|
||||||
|
|
||||||
|
\begin_layout Plain Layout
|
||||||
|
docstring
|
||||||
|
\end_layout
|
||||||
|
|
||||||
|
\end_inset
|
||||||
|
|
||||||
|
instead of UTF-8 encoded
|
||||||
|
\begin_inset Flex Code
|
||||||
|
status collapsed
|
||||||
|
|
||||||
|
\begin_layout Plain Layout
|
||||||
|
std::string
|
||||||
|
\end_layout
|
||||||
|
|
||||||
|
\end_inset
|
||||||
|
|
||||||
|
.
|
||||||
\end_layout
|
\end_layout
|
||||||
|
|
||||||
\begin_layout Itemize
|
\begin_layout Itemize
|
||||||
Check out the filename and path tools in filetools.h
|
Check out the filename and path tools in
|
||||||
|
\begin_inset Flex Code
|
||||||
|
status collapsed
|
||||||
|
|
||||||
|
\begin_layout Plain Layout
|
||||||
|
filetools.h
|
||||||
|
\end_layout
|
||||||
|
|
||||||
|
\end_inset
|
||||||
|
|
||||||
|
|
||||||
\end_layout
|
\end_layout
|
||||||
|
|
||||||
\begin_layout Itemize
|
\begin_layout Itemize
|
||||||
Check out the string tools in lstring.h.
|
Check out the string tools in
|
||||||
|
\begin_inset Flex Code
|
||||||
|
status collapsed
|
||||||
|
|
||||||
|
\begin_layout Plain Layout
|
||||||
|
lstring.h
|
||||||
|
\end_layout
|
||||||
|
|
||||||
|
\end_inset
|
||||||
|
|
||||||
|
.
|
||||||
\end_layout
|
\end_layout
|
||||||
|
|
||||||
\begin_layout Itemize
|
\begin_layout Itemize
|
||||||
@ -6553,6 +6776,7 @@ If you create a new file, the top of the file should look something like
|
|||||||
|
|
||||||
\begin_layout Standard
|
\begin_layout Standard
|
||||||
\begin_inset listings
|
\begin_inset listings
|
||||||
|
lstparams "basicstyle={\ttfamily},showstringspaces=false,tabsize=4"
|
||||||
inline false
|
inline false
|
||||||
status open
|
status open
|
||||||
|
|
||||||
@ -6597,7 +6821,12 @@ author Kaiser Sose
|
|||||||
|
|
||||||
\begin_layout Plain Layout
|
\begin_layout Plain Layout
|
||||||
|
|
||||||
* Full author contact details are available in file CREDITS
|
* Full author contact details are available
|
||||||
|
\end_layout
|
||||||
|
|
||||||
|
\begin_layout Plain Layout
|
||||||
|
|
||||||
|
* in file CREDITS.
|
||||||
\end_layout
|
\end_layout
|
||||||
|
|
||||||
\begin_layout Plain Layout
|
\begin_layout Plain Layout
|
||||||
@ -6643,13 +6872,34 @@ in the .cpp files you document the implementation.
|
|||||||
|
|
||||||
\end_deeper
|
\end_deeper
|
||||||
\begin_layout Itemize
|
\begin_layout Itemize
|
||||||
Single line description (///), multiple lines description (/** ...
|
Single line description (
|
||||||
*/) see the doxygen webpage referenced above
|
\begin_inset Flex Code
|
||||||
|
status collapsed
|
||||||
|
|
||||||
|
\begin_layout Plain Layout
|
||||||
|
///
|
||||||
|
\end_layout
|
||||||
|
|
||||||
|
\end_inset
|
||||||
|
|
||||||
|
), multiple lines description (
|
||||||
|
\begin_inset Flex Code
|
||||||
|
status collapsed
|
||||||
|
|
||||||
|
\begin_layout Plain Layout
|
||||||
|
/** ...
|
||||||
|
*/
|
||||||
|
\end_layout
|
||||||
|
|
||||||
|
\end_inset
|
||||||
|
|
||||||
|
), see the doxygen webpage referenced above.
|
||||||
\end_layout
|
\end_layout
|
||||||
|
|
||||||
\end_deeper
|
\end_deeper
|
||||||
\begin_layout Section
|
\begin_layout Section
|
||||||
Naming rules for Lyx User Functions (LFUNs)
|
Naming rules for \SpecialChar LyX
|
||||||
|
User Functions (LFUNs)
|
||||||
\end_layout
|
\end_layout
|
||||||
|
|
||||||
\begin_layout Standard
|
\begin_layout Standard
|
||||||
@ -6658,7 +6908,7 @@ Here is the set of rules to apply when a new command name is introduced:
|
|||||||
|
|
||||||
\begin_layout Enumerate
|
\begin_layout Enumerate
|
||||||
Use the object.event order.
|
Use the object.event order.
|
||||||
That is, use `word-forward' instead of`forward-word'.
|
That is, use `word-forward' instead of `forward-word'.
|
||||||
\end_layout
|
\end_layout
|
||||||
|
|
||||||
\begin_layout Enumerate
|
\begin_layout Enumerate
|
||||||
@ -6716,6 +6966,7 @@ We need to add a function f to the class C's API.
|
|||||||
\begin_deeper
|
\begin_deeper
|
||||||
\begin_layout Standard
|
\begin_layout Standard
|
||||||
\begin_inset listings
|
\begin_inset listings
|
||||||
|
lstparams "basicstyle={\ttfamily},showstringspaces=false,tabsize=4"
|
||||||
inline false
|
inline false
|
||||||
status open
|
status open
|
||||||
|
|
||||||
@ -6832,9 +7083,67 @@ inline
|
|||||||
|
|
||||||
\begin_layout Itemize
|
\begin_layout Itemize
|
||||||
use the same form in corresponding calls to new and delete, i.e.
|
use the same form in corresponding calls to new and delete, i.e.
|
||||||
write delete[] obj; if new obj[n]; was used to create the object and write
|
write
|
||||||
delete obj; if you wrote new obj; Notice strings should be std::string's
|
\begin_inset Flex Code
|
||||||
instead of char *'s.
|
status collapsed
|
||||||
|
|
||||||
|
\begin_layout Plain Layout
|
||||||
|
delete[] obj;
|
||||||
|
\end_layout
|
||||||
|
|
||||||
|
\end_inset
|
||||||
|
|
||||||
|
if
|
||||||
|
\begin_inset Flex Code
|
||||||
|
status collapsed
|
||||||
|
|
||||||
|
\begin_layout Plain Layout
|
||||||
|
new obj[n];
|
||||||
|
\end_layout
|
||||||
|
|
||||||
|
\end_inset
|
||||||
|
|
||||||
|
was used to create the object and write
|
||||||
|
\begin_inset Flex Code
|
||||||
|
status collapsed
|
||||||
|
|
||||||
|
\begin_layout Plain Layout
|
||||||
|
delete obj;
|
||||||
|
\end_layout
|
||||||
|
|
||||||
|
\end_inset
|
||||||
|
|
||||||
|
if you wrote
|
||||||
|
\begin_inset Flex Code
|
||||||
|
status collapsed
|
||||||
|
|
||||||
|
\begin_layout Plain Layout
|
||||||
|
new obj;
|
||||||
|
\end_layout
|
||||||
|
|
||||||
|
\end_inset
|
||||||
|
|
||||||
|
Notice strings should be
|
||||||
|
\begin_inset Flex Code
|
||||||
|
status collapsed
|
||||||
|
|
||||||
|
\begin_layout Plain Layout
|
||||||
|
std::string
|
||||||
|
\end_layout
|
||||||
|
|
||||||
|
\end_inset
|
||||||
|
|
||||||
|
's instead of
|
||||||
|
\begin_inset Flex Code
|
||||||
|
status collapsed
|
||||||
|
|
||||||
|
\begin_layout Plain Layout
|
||||||
|
char *
|
||||||
|
\end_layout
|
||||||
|
|
||||||
|
\end_inset
|
||||||
|
|
||||||
|
's.
|
||||||
(this contradicts to
|
(this contradicts to
|
||||||
\begin_inset CommandInset ref
|
\begin_inset CommandInset ref
|
||||||
LatexCommand ref
|
LatexCommand ref
|
||||||
@ -6917,7 +7226,27 @@ ensure that global objects are initialized before they are used
|
|||||||
\end_layout
|
\end_layout
|
||||||
|
|
||||||
\begin_layout Itemize
|
\begin_layout Itemize
|
||||||
avoid conditions to 'if' and 'while' that span more than a line
|
avoid conditions to
|
||||||
|
\begin_inset Flex Code
|
||||||
|
status collapsed
|
||||||
|
|
||||||
|
\begin_layout Plain Layout
|
||||||
|
if
|
||||||
|
\end_layout
|
||||||
|
|
||||||
|
\end_inset
|
||||||
|
|
||||||
|
and
|
||||||
|
\begin_inset Flex Code
|
||||||
|
status collapsed
|
||||||
|
|
||||||
|
\begin_layout Plain Layout
|
||||||
|
while
|
||||||
|
\end_layout
|
||||||
|
|
||||||
|
\end_inset
|
||||||
|
|
||||||
|
that span more than a line
|
||||||
\end_layout
|
\end_layout
|
||||||
|
|
||||||
\begin_layout Chapter
|
\begin_layout Chapter
|
||||||
@ -6986,6 +7315,7 @@ In C++11 there's a "built-in":
|
|||||||
|
|
||||||
\begin_layout Standard
|
\begin_layout Standard
|
||||||
\begin_inset listings
|
\begin_inset listings
|
||||||
|
lstparams "basicstyle={\ttfamily},showstringspaces=false,tabsize=4"
|
||||||
inline false
|
inline false
|
||||||
status open
|
status open
|
||||||
|
|
||||||
@ -7005,12 +7335,18 @@ until then on namespace scope:
|
|||||||
|
|
||||||
\begin_layout Standard
|
\begin_layout Standard
|
||||||
\begin_inset listings
|
\begin_inset listings
|
||||||
|
lstparams "basicstyle={\ttfamily},showstringspaces=false,tabsize=4"
|
||||||
inline false
|
inline false
|
||||||
status open
|
status open
|
||||||
|
|
||||||
\begin_layout Plain Layout
|
\begin_layout Plain Layout
|
||||||
|
|
||||||
#include <boost/static_assert.hpp> BOOST_STATIC_ASSERT(sizeof(int) == 4)
|
#include <boost/static_assert.hpp>
|
||||||
|
\end_layout
|
||||||
|
|
||||||
|
\begin_layout Plain Layout
|
||||||
|
|
||||||
|
BOOST_STATIC_ASSERT(sizeof(int) == 4)
|
||||||
\end_layout
|
\end_layout
|
||||||
|
|
||||||
\end_inset
|
\end_inset
|
||||||
@ -7024,22 +7360,43 @@ or without boost:
|
|||||||
|
|
||||||
\begin_layout Standard
|
\begin_layout Standard
|
||||||
\begin_inset listings
|
\begin_inset listings
|
||||||
|
lstparams "basicstyle={\ttfamily},showstringspaces=false,tabsize=4"
|
||||||
inline false
|
inline false
|
||||||
status open
|
status open
|
||||||
|
|
||||||
\begin_layout Plain Layout
|
\begin_layout Plain Layout
|
||||||
|
|
||||||
template<bool Condition> struct static_assert_helper;
|
template<bool Condition>
|
||||||
\end_layout
|
\end_layout
|
||||||
|
|
||||||
\begin_layout Plain Layout
|
\begin_layout Plain Layout
|
||||||
|
|
||||||
template <> struct static_assert_helper<true> {};
|
struct static_assert_helper;
|
||||||
\end_layout
|
\end_layout
|
||||||
|
|
||||||
\begin_layout Plain Layout
|
\begin_layout Plain Layout
|
||||||
|
|
||||||
enum { dummy = sizeof(static_assert_helper<sizeof(int) == 4>)};
|
template <>
|
||||||
|
\end_layout
|
||||||
|
|
||||||
|
\begin_layout Plain Layout
|
||||||
|
|
||||||
|
struct static_assert_helper<true> {};
|
||||||
|
\end_layout
|
||||||
|
|
||||||
|
\begin_layout Plain Layout
|
||||||
|
|
||||||
|
enum {
|
||||||
|
\end_layout
|
||||||
|
|
||||||
|
\begin_layout Plain Layout
|
||||||
|
|
||||||
|
dummy = sizeof(static_assert_helper<sizeof(int) == 4>)
|
||||||
|
\end_layout
|
||||||
|
|
||||||
|
\begin_layout Plain Layout
|
||||||
|
|
||||||
|
};
|
||||||
\end_layout
|
\end_layout
|
||||||
|
|
||||||
\end_inset
|
\end_inset
|
||||||
@ -7053,6 +7410,7 @@ or somewhat brutish without templates, in any function:
|
|||||||
|
|
||||||
\begin_layout Standard
|
\begin_layout Standard
|
||||||
\begin_inset listings
|
\begin_inset listings
|
||||||
|
lstparams "basicstyle={\ttfamily},showstringspaces=false,tabsize=4"
|
||||||
inline false
|
inline false
|
||||||
status open
|
status open
|
||||||
|
|
||||||
@ -7063,7 +7421,7 @@ const int d = sizeof(int) - 4;
|
|||||||
|
|
||||||
\begin_layout Plain Layout
|
\begin_layout Plain Layout
|
||||||
|
|
||||||
switch(0) {
|
switch (0) {
|
||||||
\end_layout
|
\end_layout
|
||||||
|
|
||||||
\begin_layout Plain Layout
|
\begin_layout Plain Layout
|
||||||
@ -7078,7 +7436,7 @@ case !(d*d):
|
|||||||
|
|
||||||
\begin_layout Plain Layout
|
\begin_layout Plain Layout
|
||||||
|
|
||||||
break;
|
break;
|
||||||
\end_layout
|
\end_layout
|
||||||
|
|
||||||
\begin_layout Plain Layout
|
\begin_layout Plain Layout
|
||||||
@ -7092,7 +7450,16 @@ break;
|
|||||||
\end_layout
|
\end_layout
|
||||||
|
|
||||||
\begin_layout Standard
|
\begin_layout Standard
|
||||||
Any of them in a .cpp file will break compilation as soon as sizeof(int)
|
Any of them in a .cpp file will break compilation as soon as
|
||||||
|
\begin_inset Flex Code
|
||||||
|
status collapsed
|
||||||
|
|
||||||
|
\begin_layout Plain Layout
|
||||||
|
sizeof(int)
|
||||||
|
\end_layout
|
||||||
|
|
||||||
|
\end_inset
|
||||||
|
|
||||||
is not equal 4.
|
is not equal 4.
|
||||||
Personally I prefer something like the third version (or the first, if
|
Personally I prefer something like the third version (or the first, if
|
||||||
using C++11 is allowed).
|
using C++11 is allowed).
|
||||||
@ -7233,10 +7600,9 @@ literal "true"
|
|||||||
|
|
||||||
\end_inset
|
\end_inset
|
||||||
|
|
||||||
S.
|
Meyers, Scott.
|
||||||
Meyers.
|
Effective C++: 50 Specific Ways to Improve Your Programs and Design.
|
||||||
Effective C++, 50 Specific Ways to Improve Your Programs and Design.
|
Addison-Wesley, 1992.
|
||||||
Addison-Wesley, 1992
|
|
||||||
\end_layout
|
\end_layout
|
||||||
|
|
||||||
\begin_layout Bibliography
|
\begin_layout Bibliography
|
||||||
@ -7249,7 +7615,7 @@ literal "true"
|
|||||||
|
|
||||||
Sutter, Herb.
|
Sutter, Herb.
|
||||||
Exceptional C++: 47 engineering puzzles, programming problems, and solutions.
|
Exceptional C++: 47 engineering puzzles, programming problems, and solutions.
|
||||||
ISBN 0-201-61562-2
|
ISBN 0-201-61562-2.
|
||||||
\end_layout
|
\end_layout
|
||||||
|
|
||||||
\begin_layout Bibliography
|
\begin_layout Bibliography
|
||||||
@ -7260,7 +7626,8 @@ literal "true"
|
|||||||
|
|
||||||
\end_inset
|
\end_inset
|
||||||
|
|
||||||
Scott Meyers, C/C++ User's Journal (Vol.18,No.2)
|
Meyers, Scott.
|
||||||
|
C/C++ User's Journal (Vol.18, No.2).
|
||||||
\end_layout
|
\end_layout
|
||||||
|
|
||||||
\end_body
|
\end_body
|
||||||
|
Loading…
Reference in New Issue
Block a user