2016-03-23 9 views
0

Ich lese durch Code abgeschlossen und hatte eine Frage über "Streamline-Parameter übergeben". Der Autor sagt, dass, wenn Sie einen Parameter zwischen mehreren Routinen übergeben, dies eine Notwendigkeit anzeigen könnte, diese Routinen in eine Klasse einzubeziehen, die den Parameter als Klassendaten teilt.Streamline-Parameter übergeben

Bedeutet dies, dass, wenn ich mehrere separate Klassen habe, die dieselben Daten verwenden, ich eine neue Klasse erstellen sollte, die diese Daten verwendet, und dann erben, um neue Klassen zu erstellen?

Oder

Bedeutet dies, dass, wenn ich ein paar lose Routinen in meinem Programm haben sollte ich voran gehen und sie in eine Klasse setzen und die Vorteile der Verkapselung erhalten etc.

Danke

+0

muss nicht jeder zur Hand haben, daher wäre es gut, wenn Sie ein exaktes Zitat in die Frage aufnehmen könnten. – user463035818

+0

Es gibt eine "Macht" in dem Text, auf die Sie sich beziehen, und es bedeutet nicht, dass Sie * irgendetwas * tun sollten, außer dass Sie nach Ihrem eigenen Urteil entscheiden, ob Ihr Code möglicherweise von einer Umstrukturierung profitieren könnte. Die Anwendung dieser Idee * könnte * auch zu einer schlimmeren Unordnung führen, als Sie anfingen. – molbdnilo

Antwort

0

Letzteres. Es sieht aus wie sie etwa einem Fall wie diesem reden:

void function_1(std::string& my_data); 
void function_2(std::string& my_data); 

void main() { 
    std::string my_data = "SomeString"; 
    function_1(my_data); 
    function_2(my_data); 
} 

Welche geändert werden könnte:

class MyClass { 
    std::string my_data; 
pulbic: 
    MyClass(const std::string& str) : my_data(str) {} 
    void function_1(); 
    void function_2(); 
} 

void main() { 
    MyClass obj("SomeString"); 
    obj.function_1(); 
    obj.function_2(); 
} 

Wo function_1 und function_2 das Feld my_data verwenden, anstatt den String übergeben werden jedes Mal.

+0

Es geht also darum, ein Datenstück privat und innerhalb der Klasse zu halten, anstatt es zwischen Klassen zu übergeben. Vielen Dank für das Codebeispiel. – Athomas1

+0

Nun, das war ein einfaches Beispiel, also ist die Lesbarkeitsverbesserung nicht so groß. Aber wenn wir, sagen wir, 20 Variablen haben, die wir an jede Funktion übergeben müssen, ist es viel sauberer, sie nur einmal an einen Konstruktor zu übergeben. Das ist der Hauptpunkt, an dem sie zu sein scheinen. Die Kapselung ist jedoch aus anderen Gründen gut. –