Многие программисты стремятся к самодокументируемому коду, который помогает клиентам понять его.В объявлении класса C ++ они будут переходить от наиболее важных (то есть, что, вероятно, наиболее часто проверяемых) к наименее важным:
class Class {
public:
// First what interest all clients.
static Class FromFoobar(float foobar); // Named constructors in client code
// often document best
Class(); // "Unnamed" constructors.
/* public methods */
protected:
// This is only of interest to those who specialize
// your class.
private:
// Of interest to your class.
};
Основываясь на этом, если вы используете Qt, может быть интересен следующий порядок:
class SomeQtClass : public QObject {
public:
signals: // what clients can couple on
public slots: // what clients can couple to
protected:
protected slots:
};
Затем то же самое для защищенных и закрытых слотов.Нет особой причины, по которой я предпочитаю сигналы слотам;возможно, потому что сигналы всегда общедоступны, но я предполагаю, что их порядок будет зависеть от ситуации, во всяком случае, я сохраняю его непротиворечивым.
Еще один бит, который мне нравится, - это использование спецификаторов доступа для визуального отделения поведения от данных.(следуя порядку важности, сначала поведение, потом данные, потому что поведение является основным интересом для разработчика классов):
class Class {
private:
void foobar() ;
private:
float frob_;
int glob_;
};
Сохранение последнего правила помогает предотвратить визуальное рассеяние компонентов класса (все мы знаемкак выглядят некоторые устаревшие классы с течением времени, когда переменные и функции перепутаны, а не?).