2016-03-23 21 views
0

我在閱讀完整代碼並詢問「簡化參數傳遞」。作者說,如果你在幾個例程中傳遞一個參數,這可能表明需要將這些例程分解到一個類中,該類將參數作爲類數據共享。精簡參數傳遞

這是否意味着如果我有幾個單獨的類使用相同的數據,我應該創建一個新的類使用該數據,然後繼承以創建新的類?

或者

這是否意味着,如果我有一堆鬆散的程序在我的計劃,我應該繼續前進,把它們放在一個班,並獲得封裝的好處,等等

謝謝

+0

不是每個人都必須在手邊預訂,因此如果您可以在問題中包含確切的引用,那將是很好的。 – user463035818

+0

你所指的文本中有一個「可能」,並不意味着你應該*特別做任何事情,除非使用你自己的良好判斷來確定你的代碼是否可以從重構中受益。應用這個想法*可能會導致比你開始時更糟的混亂。 – molbdnilo

回答

0

後者。它看起來像他們在談論這樣一個案例:

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); 
} 

這可能是更改爲:

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(); 
} 

function_1function_2使用my_data領域,而不是被傳遞的字符串每次。

+0

所以它是關於保持一段數據私有和在類中,而不是在類之間傳遞。 謝謝你的代碼示例。 – Athomas1

+0

好吧,這是一個簡單的例子,所以可讀性的提高並不大。但是,如果我們有20個變量需要傳遞給每個函數,那麼將它們傳遞給構造函數會更簡潔一些。這是他們似乎要做的主要觀點。封裝很好,但其他原因。 –