138 votes

Meilleure pratique : classement de public/protégé/privé dans la définition de la classe ?

Je commence un nouveau projet à partir de zéro et je veux qu'il soit propre / qu'il ait de bonnes normes de codage. Dans quel ordre les développeurs chevronnés d'ici aiment-ils présenter les choses à l'intérieur d'une classe ?

A : 1) méthodes publiques 2) méthodes privées 3) vars publics 4) vars privés

B : 1) vars publics 2) vars privés 3) méthodes publiques 4) méthodes privées

C : 1) vars publiques 2) méthodes publiques 3) méthodes privées 4) vars privées

J'aime généralement placer les variables statiques publiques en haut de la liste, mais alors une méthode statique publique serait-elle listée avant votre constructeur, ou le constructeur devrait-il toujours être listé en premier ? Ce genre de choses...

Je sais que c'est délicat, mais je me demandais quelles étaient les meilleures pratiques en la matière.

PS : non, je n'utilise pas Cc#. Je sais. Je suis un luddite.

0voto

saeed Points 2147

Il est préférable de décrire la logique de la classe dans les commentaires en haut du fichier d'en-tête simplement et les ordres d'appel de fonction pour comprendre ce qu'une classe dose et les algorithmes utilisés à l'intérieur.

J'utilise Qt c++ depuis un certain temps et je vois de nouvelles sortes de mots-clés comme signal y slot Je préfère continuer à commander comme ci-dessus et partager mon idée avec vous ici.

#ifndef TEMPLATE_H
#define TEMPLATE_H

class ClassName
{
    Q_OBJECT
    Q_PROPERTY(qreal startValue READ startValue WRITE setStartValue)
    Q_ENUMS(MyEnum)

public:

    enum MyEnum {
        Hello = 0x0,
        World = 0x1
    };

    // constructors

    explicit ClassName(QObject *parent = Q_NULLPTR);
    ~ClassName();

    // getter and setters of member variables

    // public functions (normal & virtual) -> orderby logic

public slots:

signals:

protected:

    // protected functions it's rule followed like public functions

private slots:

private:

    // methods

    // members

};

#endif // TEMPLATE_H

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X