2011-12-06 67 views

回答

7

命名它們的好處是你可以在文檔中引用它們。 (這包括你的編輯器/ IDE選擇它們,並在你打出這樣的函數時提示它們作爲提示。)

缺點是名稱可能會根據函數的實現而改變,除了事實函數聲明中的名稱可能與函數定義中的名稱不同。 (IOW:我看不出有什麼缺點)

+0

+1,但你也可能會提到,如果你在聲明中加入了變量名,智能感知(或者你可能擁有的任何東西)都可以選擇它們。這只不過是文檔,而是一個有用的闡述。 –

+0

@JohnDibling:的確,我忘記了! – sbi

3

對於文檔的原因主要

+0

如果定義和聲明是相同的(給出或採用分號),維護也更容易 –

3

命名參數有當您使用支持自動完成的IDE工作顯著的優勢。當你開始輸入你的函數的名字時,IDE彈出一個建議列表。看到findUser(string firstName, string lastName)告訴你很多比簡單findUser(string,string)

1

這是更多的風格問題。就個人而言,如果我看到沒有命名參數的函數聲明,我發現很難閱讀。我認爲你可以鍵入C++的能力越強,它就越好。

1

一個優勢是,他們可以傳達更多信息時,參數類型相同

考慮

CoordSystem CreateCoordinateSystem(const UnitVector& xdirection, 
    const UnitVector& ydirection, const UnitVector& zdirection 
) 

CoordSystem CreateCoordinateSystem(const UnitVector& , 
    const UnitVector& , const UnitVector&) 
0

在聲明中不會有任何真正的編程優勢或缺點。然而,有一個風格的優點,我能想到的:

當你沒有在函數中使用的參數,你可以不命名在聲明此參數和定義:

void foo(int); 

void foo(int) 
{ 
} 

命名您在定義中沒有使用的參數不是非法的,但是它是一個皮棉警告!我提到的樣式優勢不是在聲明中命名參數,因此瀏覽頭文件的人會知道某個參數未在定義中使用。但是,只有在定義和聲明之間同步未命名時,纔會這樣。

這裏的時候,你可能想沒有名稱的參數爲例:

class Base 
{ 
    virtual void foo(int a) = 0; 
}; 

class Child1 
{ 
    virtual void foo(int a) { std::cout << a + 1 << std::endl; } 
}; 

class Child2 
{ 
    virtual void foo(int) { std::cout << "mwahaha" << std::endl; } 
}; 

在這種情況下,參數沒有命名,但仍必須提供,因爲函數原型必須匹配其家長。

+1

我不會downvote,但這並不完全適用。這個問題具體是關於**聲明**中的參數命名,但是您所做的(有效)點僅適用於函數**定義**。 –