Warning, /education/marble/CODING is written in an unsupported language. File is not indexed.

0001                      Coding Standards for Marble
0002                      ===========================
0003 
0004 
0005 This file contains the coding standards for Marble.  If you want to
0006 add or change code in Marble, you must follow these standards.
0007 
0008 
0009 Foundation
0010 ----------
0011 
0012 The foundation for these standards is the kdelibs coding style.  It is
0013 described here: https://community.kde.org/Policies/Kdelibs_Coding_Style
0014 I suggest that you start by reading that document, it's not long.
0015 
0016 
0017 Recapitulation
0018 --------------
0019 
0020 Let's recapitulate a few key points from the kdelibs coding
0021 style. This is not the full standard, but just the most important
0022 points.
0023 
0024  - 4 spaces indentation
0025  - no tabs in the source code
0026  - opening braces at end of line (except struct, class, functions and
0027    namespaces)
0028  - as little abbreviation in variable names as possible
0029  - one variable declaration per line
0030  - whitespace after control statements
0031  - no space after pointer or reference ('*foo', not '* foo')
0032  - no lines longer than 100 chars.
0033 
0034 That's a very short recapitulation of the above mentioned document.
0035 The full document contains lots of examples to show how it should be
0036 done.
0037 
0038 Class names and Variables
0039 -------------------------
0040 
0041  - Class names should have the ("namespace") prefix "Marble" if
0042 
0043     * they are parts of the Marble library that get exported.
0044     * they resemble widgets or similar visually exposed items
0045 
0046    The remaining part of the name should reflect the purpose of the 
0047    class and should be camel cased with the first letter being upper 
0048    cased.
0049 
0050    All other classes should not have the "Marble" prefix. 
0051 
0052  - All header files should contain an include guard which prevents from
0053    including a header file more than once. The include guard name consists
0054    of the Marble namespace prefix (if the class is part of the Marble 
0055    namespace), the name of the class and an H. The name is in full upper case
0056    and separated with an underscore.
0057 
0058    Correct:
0059       #ifndef MARBLE_ROUTINGWIDGET_H
0060       #define MARBLE_ROUTINGWIDGET_H
0061       ...
0062       #endif // MARBLE_ROUTINGWIDGET_H
0063 
0064    Wrong:
0065       MARBLE_ROUTING_WIDGET_H
0066       MARBLEROUTINGWIDGET_H
0067       ROUTINGWIDGET_H
0068       ROUTING_WIDGET_H
0069 
0070  - camelCasing with the first letter being lower cased should be used 
0071    for methods and variables (e.g. myMethodName()). Full 
0072    upper cased names should be used for constants (e.g. RAD2DEG).
0073 
0074 Extensions
0075 ----------
0076 
0077 The style defined above is not complete, so we have added the
0078 following item:
0079 
0080 
0081 Broken Lines in Expressions
0082 - - - - - - - - - - - - - -
0083 
0084 If an expression is so long that the line has to be broken, the break
0085 should occur *in front of* an operator, not *behind* it.
0086 
0087 Example:
0088 
0089    var = very_long_sub_expression
0090          + another_very_long_sub_expression;
0091 
0092 Another common case for this is logical expressions for if statements:
0093 
0094     if (very_long_sub_expression
0095         && another_very_long_sub_expression) {
0096         doSomething();
0097     }
0098 
0099 See also below for how to handle braces in this case.
0100 
0101 
0102 Special considerations for Marble
0103 ---------------------------------
0104 
0105 Some things are only applicable for Marble.
0106 
0107 Abbreviations
0108 - - - - - - -
0109 
0110 Use the following abbreviations in variable names and comments:
0111 
0112 lon     longitude (not lng!)
0113 lat     latitude
0114 
0115 As parameters (and preferably in other places as well) 
0116 longitude and latitude should appear in lon-lat order
0117 (not lat-lon!).
0118 
0119 
0120 Dependencies
0121 ------------
0122 
0123 Marble has a policy to be buildable using only recent versions of Qt and cmake.
0124 I.e. to compile Marble with its basic functionality (library or app) no other dependencies are required.
0125 
0126 However, certain features may only be enabled if additional optional dependencies are available.