CodingStyle.cc 2.85 KB
Newer Older
Lorenz Meier's avatar
Lorenz Meier committed
1
2
3
4
5
6
7
8
9
/****************************************************************************
 *
 *   (c) 2009-2016 QGROUNDCONTROL PROJECT <http://www.qgroundcontrol.org>
 *
 * QGroundControl is licensed according to the terms in the file
 * COPYING.md in the root of the source code directory.
 *
 ****************************************************************************/

Don Gagne's avatar
Don Gagne committed
10
11
12
// This is an example class c++ file which is used to describe the QGroundControl
// coding style. In general almost everything in here has some coding style meaning.
// Not all style choices are explained.
Don Gagne's avatar
Don Gagne committed
13
14
15
16
17
18
19

#include "CodingStyle.h"
#include "QGCApplication.h"

#include <QFile>
#include <QDebug>

20
21
#include <math.h>

Ricardo de Almeida Gonzaga's avatar
Ricardo de Almeida Gonzaga committed
22
// Note how the Qt headers and the QGroundControl headers above are kept separate
Don Gagne's avatar
Don Gagne committed
23
24
25

Q_LOGGING_CATEGORY(CodingStyleLog, "CodingStyleLog")

26
27
const int CodingStyle::_privateStaticVariable = 0;

Don Gagne's avatar
Don Gagne committed
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
CodingStyle::CodingStyle(QObject* parent) :
    QObject(parent),
    _protectedVariable(1),
    _privateVariable1(2),
    _privateVariable2(3)
{

}

/// Document non-obvious private methods in the code file.
void CodingStyle::_privateMethod(void)
{
    // Always include braces even for single line if/for/...
    if (uas != _uasId) {
        return;
    }
    
    // Note the brace placement
    if (_lastSeenComponent == -1) {
        _lastSeenComponent = component;
    } else {
        Q_ASSERT(component == _lastSeenComponent);  // Asserts are your friend
    }
}

void CodingStyle::_privateMethod2(void)
{
    Fact* fact = qobject_cast<Fact*>(sender());
    Q_ASSERT(fact);
    
    QVariant typedValue;
    switch (fact->type()) {
        case FactMetaData::valueTypeInt8:
        case FactMetaData::valueTypeInt16:
        case FactMetaData::valueTypeInt32:
            typedValue.setValue(QVariant(value.toInt()));
            break;
            
        case FactMetaData::valueTypeUint8:
        case FactMetaData::valueTypeUint16:
        case FactMetaData::valueTypeUint32:
            typedValue.setValue(value.toUInt());
            break;
            
72
73
        case FactMetaData::valueTypeFloat: {
            int localScopedVar = 1;
Don Gagne's avatar
Don Gagne committed
74
            typedValue.setValue(value.toFloat());
75
        }
Don Gagne's avatar
Don Gagne committed
76
77
78
79
80
81
82
            break;
            
        case FactMetaData::valueTypeDouble:
            typedValue.setValue(value.toDouble());
            break;
    }
}
83
84
85
86
87

void CodingStyle::_methodWithManyArguments(QWidget*         parent,
                                           const QString&   caption,
                                           const QString&   dir,
                                           Options          options1,
DonLakeFlyer's avatar
   
DonLakeFlyer committed
88
                                           Options          /* options2 */,
89
90
                                           Options          options3)
{
DonLakeFlyer's avatar
   
DonLakeFlyer committed
91
92
93
    // options2 is an unused method argument.
    // Do not use Q_UNUSUED and do not just remove the argument name and leave the type.

94
95
    // Implementataion here...
}