Coding Style


Sometimes, a free function upon a class is the only way to go, even if that function requires internal knowledge of that class.

In that case, ask what is more sane: Exposing a field to the whole world, by making an accessor or the field public, or exposing private and protected data/functions to cherry picked entities only.

In this, friends help to keep proper encapsulation.

Qt Class Header Files

More complex classes (rule of thumb: whose declarations takes up more than 30 lines of code) should follow this pattern:

class Foo: public QWidget
// ================== Public ===================================================
        explicit Foo(QWidget *parent = 0);

        void setValue (int);
        int value() const;

        void valueChanged();

public slots:
        void changeValue();

// ================== Private ==================================================
        void indicateFoo();
        void indicateBar();

private slots:
        void on_spinBox_valueChanged(int);

        int value_;

  1. public
  2. protected
  3. private

Within each:
  1. functions
  2. signals
  3. slots


In the frontend things of picogen, heavy use is made of signals and slots. Here are some rules-of-thumbs regarding the use of them:

  • feedback to the user should be given as fast as possible, the user wants it responsive
  • anyhow, if an action is invoked as a result of mouse-dragging, the signal-emission should be minimal (e.g., only some spin boxes should be updated), only when the dragging is over, a changed-signal should be emitted to the rest of the program