2017-04-02 2 views
0

Supposons que j'ai une classe Sensor comme indiqué ci-dessous:C++ - Est-ce une mauvaise pratique d'avoir des variables qui ne sont pas des propriétés d'objet de classe dans une classe?

class Sensor 
{ 
    public: 
     Sensor(); 
     array <float, 3> marker_pos(float, float, float); 

    private: 
     float range; 
     float phi; 
     array <float, 3> temp; 
     int flag = 0; 
}; 

Les variables range et phi sont des propriétés ou des variables de l'objet de détection. Mais les variables temp et flag ne sont que des variables normales qui doivent être utilisées dans la fonction marker_pose.

1. Est-ce une mauvaise pratique de définir/déclarer temp et flag dans la classe? Si je les définis/déclarons à l'intérieur de la fonction marker_pose, il sera défini à chaque fois que j'appelle cette fonction. est-ce une bonne idée?

3. Quelle sera la meilleure pratique à suivre dans de telles situations?

+4

1. Oui. 2. Oui. 3. Voir 1 et 2. –

+1

Notez que votre code et l'alternative (2) ne sont pas interchangeables: Avec (2), plusieurs appels simultanés de 'marker_pos' se comportent tous indépendamment; avec le code donné, ils font la course. De plus, votre 'marker_pos' n'est pas réentrant. Donc, je dirais que la question n'est pas bien posée. –

Répondre

5

Vous devez toujours définir les variables à la portée minimale possible. Ainsi, si les variables ne sont utilisées qu'à l'intérieur d'une fonction, elles doivent être définies dans la fonction et non dans la classe.

+0

Donc, après l'exécution de la fonction, ces variables seront détruites et il n'y aura pas de fuite de mémoire, non? –

+1

Oui. Pour tous les types utilisés par votre classe, il n'y a aucune possibilité de fuite de mémoire pour ces types. –

+0

Pour une évaluation paresseuse, il peut être valide de déclarer/définir des variables dans la classe même si elles ne sont utilisées qu'à l'intérieur d'une fonction. – zett42

0

En C++, vous devez déclarer les variables le plus tard possible (ie: aussi profond que vous le pouvez).

Réduire au minimum le life span de différentes variables peuvent améliorer la visibilité de votre code et faciliter la mise au point et l'entretien de votre programme.