summaryrefslogtreecommitdiffstats
path: root/chicken-wranglers/doc/standard/coding-standards.txt
diff options
context:
space:
mode:
Diffstat (limited to 'chicken-wranglers/doc/standard/coding-standards.txt')
-rw-r--r--chicken-wranglers/doc/standard/coding-standards.txt209
1 files changed, 209 insertions, 0 deletions
diff --git a/chicken-wranglers/doc/standard/coding-standards.txt b/chicken-wranglers/doc/standard/coding-standards.txt
new file mode 100644
index 0000000..95f42bd
--- /dev/null
+++ b/chicken-wranglers/doc/standard/coding-standards.txt
@@ -0,0 +1,209 @@
+http://developer.qt.nokia.com/wiki/Qt_Coding_Style
+http://techbase.kde.org/Policies/Kdelibs_Coding_Style
+
+Qt Coding Style
+
+This is an overview of the coding conventions we use when writing Qt code.
+The data has been gathered by mining the Qt sources, discussion forums, email threads and through collaboration of the developers.
+
+Indentation
+============
+4 spaces are used for indentation
+Spaces, not tabs!
+
+Declaring variables
+===================
+Declare each variable on a separate line
+Avoid short (e.g. “a”, “rbarr”, “nughdeget”) names whenever possible
+Single character variable names are only okay for counters and temporaries, where the purpose of the variable is obvious
+Wait when declaring a variable until it is needed
+// Wrong
+int a, b;
+char *c, *d;
+
+// Correct
+int height;
+int width;
+char *nameOfThis;
+char *nameOfThat;
+
+Variables and functions start with a lower-case letter. Each consecutive word in a variable’s name starts with an upper-case letter
+Avoid abbreviations
+// Wrong
+short Cntr;
+char ITEM_DELIM = '\t';
+
+// Correct
+short counter;
+char itemDelimiter = '\t';
+Classes always start with an upper-case letter. Public classes start with a ‘Q’ (QRgb). Public functions most often start with a ‘q’ (qRgb).
+
+Whitespace
+===============
+Use blank lines to group statements together where suited
+Always use only one blank line
+Always use a single space after a keyword and before a curly brace.
+// Wrong
+if(foo){
+}
+
+// Correct
+if (foo) {
+}
+
+For pointers or references, always use a single space between the type and ‘*’ or ‘&’, but no space between the ‘*’ or ‘&’ and the variable name.
+char *x;
+const QString &myString;
+const char * const y = "hello";
+Surround binary operators with spaces.
+No space after a cast.
+Avoid C-style casts when possible.
+// Wrong
+char* blockOfMemory = (char* ) malloc(data.size());
+
+// Correct
+char *blockOfMemory = reinterpret_cast<char *>(malloc(data.size()));
+
+Braces
+==========
+As a base rule, the left curly brace goes on the same line as the start of the statement:
+// Wrong
+if (codec)
+{
+}
+
+// Correct
+if (codec) {
+}
+Exception: Function implementations and class declarations always have the left brace on the start of a line:
+static void foo(int g)
+{
+ qDebug("foo: %i", g);
+}
+
+class Moo
+{
+};
+Use curly braces when the body of a conditional statement contains more than one line, and also if a single line statement is somewhat complex.
+// Wrong
+if (address.isEmpty()) {
+ return false;
+}
+
+for (int i = 0; i < 10; ++i) {
+ qDebug("%i", i);
+}
+
+// Correct
+if (address.isEmpty())
+ return false;
+
+for (int i = 0; i < 10; ++i)
+ qDebug("%i", i);
+Exception 1: Use braces also if the parent statement covers several lines / wraps
+// Correct
+if (address.isEmpty() || !isValid()
+ || !codec) {
+ return false;
+}
+Exception 2: Use braces also in if-then-else blocks where either the if-code or the else-code covers several lines
+// Wrong
+if (address.isEmpty())
+ return false;
+else {
+ qDebug("%s", qPrintable(address));
+ ++it;
+}
+
+// Correct
+if (address.isEmpty()) {
+ return false;
+} else {
+ qDebug("%s", qPrintable(address));
+ ++it;
+}
+
+// Wrong
+if (a)
+ if (b)
+ ...
+ else
+ ...
+
+// Correct
+if (a) {
+ if (b)
+ ...
+ else
+ ...
+}
+Use curly braces when the body of a conditional statement is empty
+// Wrong
+while (a);
+
+// Correct
+while (a) {}
+Parentheses
+
+Use parentheses to group expressions:
+// Wrong
+if (a && b || c)
+
+// Correct
+if ((a && b) || c)
+
+// Wrong
+a + b & c
+
+// Correct
+(a + b) & c
+
+Switch statements
+====================
+The case labels are in the same column as the switch
+Every case must have a break (or return) statement at the end or a comment to indicate that there’s intentionally no break
+switch (myEnum) {
+case Value1:
+ doSomething();
+ break;
+case Value2:
+ doSomethingElse();
+ // fall through
+default:
+ defaultHandling();
+ break;
+}
+
+Line breaks
+===============
+Keep lines shorter than 100 characters; insert breaks if necessary.
+Commas go at the end of a broken line; operators start at the beginning of the new line. An operator at the end of the line is easy to not see if your editor is too narrow.
+// Correct
+if (longExpression
+ + otherLongExpression
+ + otherOtherLongExpression) {
+}
+
+// Wrong
+if (longExpression +
+ otherLongExpression +
+ otherOtherLongExpression) {
+}
+
+Inheritance and the `virtual` keyword
+========================================
+When reimplementing a virtual method, do not put the `virtual` keyword in the header file.
+
+Line breaks
+============
+Try to keep lines shorter than 100 characters, inserting line breaks as necessary.
+
+Qt Includes
+============
+If you add #includes for Qt classes, use both the module and class name. This allows library code to be used by applications without excessive compiler include paths.
+Example:
+// wrong
+#include <QString>
+
+// correct
+