在函數聲明中,雖然不必命名參數,但是最好讓它們命名?這有什麼優點和缺點?函數聲明參數命名最佳實踐(C++)
回答
命名它們的好處是你可以在文檔中引用它們。 (這包括你的編輯器/ IDE選擇它們,並在你打出這樣的函數時提示它們作爲提示。)
缺點是名稱可能會根據函數的實現而改變,除了事實函數聲明中的名稱可能與函數定義中的名稱不同。 (IOW:我看不出有什麼缺點)
對於文檔的原因主要
如果定義和聲明是相同的(給出或採用分號),維護也更容易 –
命名參數有當您使用支持自動完成的IDE工作顯著的優勢。當你開始輸入你的函數的名字時,IDE彈出一個建議列表。看到findUser(string firstName, string lastName)
告訴你很多比簡單findUser(string,string)
。
這是更多的風格問題。就個人而言,如果我看到沒有命名參數的函數聲明,我發現很難閱讀。我認爲你可以鍵入C++的能力越強,它就越好。
一個優勢是,他們可以傳達更多信息時,參數類型相同
考慮
CoordSystem CreateCoordinateSystem(const UnitVector& xdirection,
const UnitVector& ydirection, const UnitVector& zdirection
)
在
CoordSystem CreateCoordinateSystem(const UnitVector& ,
const UnitVector& , const UnitVector&)
在聲明中不會有任何真正的編程優勢或缺點。然而,有一個風格的優點,我能想到的:
當你沒有在函數中使用的參數,你可以不命名在聲明此參數和定義:
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; }
};
在這種情況下,參數沒有命名,但仍必須提供,因爲函數原型必須匹配其家長。
我不會downvote,但這並不完全適用。這個問題具體是關於**聲明**中的參數命名,但是您所做的(有效)點僅適用於函數**定義**。 –
- 1. 函數參數最佳實踐
- 2. JavaScript函數參考的最佳實踐
- 3. 函數聲明中的const最佳實踐
- 4. 在main中聲明的函數原型 - 最佳實踐?
- 5. 函數中聲明的常量,最佳實踐?
- 6. DataContext命名最佳實踐
- 7. Mule命名最佳實踐
- 8. Sql命名最佳實踐
- 9. C#方法命名最佳實踐
- 10. 最佳實踐命名約定子程序與輸出參數
- 11. 的Perl:命名參數驗證的最佳實踐
- 12. 聲明變量 - 最佳實踐
- 13. PHP命名空間函數最佳實踐
- 14. 最佳實踐來處理命令行參數在C#
- 15. Autofac最佳實踐傳遞參數
- 16. 參數檢查最佳實踐
- 17. PHP通過URL參數最佳實踐
- 18. 參數驗證,在Python最佳實踐
- 19. 模型參數設置最佳實踐?
- 20. PHP字符串參數最佳實踐
- 21. 最佳實踐作爲參數
- 22. Rest Api參數驗證最佳實踐
- 23. URL參數的最佳實踐
- 24. SOAP API參數最佳實踐
- 25. shell輸入參數的最佳實踐?
- 26. C#最佳實踐
- 27. 最佳實踐 - C#
- 28. Win32 DLL導出函數參數最佳實踐
- 29. 子程序/函數參數的最佳實踐
- 30. winapi apc函數參數傳遞 - 什麼是最佳實踐
+1,但你也可能會提到,如果你在聲明中加入了變量名,智能感知(或者你可能擁有的任何東西)都可以選擇它們。這只不過是文檔,而是一個有用的闡述。 –
@JohnDibling:的確,我忘記了! – sbi