2017-07-28 3 views
0

Ie. Quand j'ai une classe direC++ quand est le bon moment pour utiliser un constructeur par défaut vs getters et setters vs simplement invoquer les variables de la classe directement

class color() 
{ 
    Private: 
    std:: string _colors 

    Public: 
    color(); 
    color(std::string colors); 
    std::string setColors(std::string colors); 
    std::string colors; 
    ~color(); 
} 

Et je voulais l'appeler dans une autre classe comme principale d'attribuer aux couleurs variables.

#include "color.h" 

using namespace std; 
int main() 
{ 
    color C; 
    C.colors = "Blue"; //is this correct 
    color("Blue"); //is this correct 
C.setColors("Blue");//or is this correct. 
return 0; 
} 

Quelle est l'heure exacte à utiliser?

Répondre

2

La réponse est: ça dépend.

Sur vous, vos préférences, les directives de codage de votre équipe, comment OO votre code est, même le sucre syntaxique de votre langue offre, etc. Aussi cela devient rapidement une question de code utilisable/lisible. Mon conseil (sans doute général) est le suivant: chaque fois que vous écrivez du code simple et que votre classe ressemble plus aux données qu'aux objets, il est totalement possible de donner un accès public à vos membres (vous pouvez utiliser des structures en C++). une classe, juste pour rendre votre décision plus évidente). Non seulement cela est-il plus facile à écrire en premier lieu, mais il est plus facile d'utiliser une lecture que des combinaisons infinies. A l'autre extrémité du spectre, les getters et les setters vous permettent de contrôler l'accès à vos membres internes, par ex. pour validation, ou pour mettre à jour l'état interne en conséquence. AFAIK c'est l'encapsulation et garde le code OO plus compliqué.

Évitez simplement d'avoir les deux méthodes pour les mêmes membres, cela devient rapidement confus et irritant.

-2

Il est toujours recommandé d'utiliser des getters et setters sauf pour les variables statiques.

+0

Si vous utilisez get/set ou l'accès direct ne dépend pas de si est statique ou non. Cela dépend s'il doit avoir des contraintes qui ne sont pas implicitement données par le type de valeur lui-même ou si une action immédiate est requise lors de la définition. –