我想知道以下兩個聲明之間的區別是在頭文件 我所遇到這兩種風格函數原型文件
void some_method(int);
和第二風格是:
void some_method(int a);
一種風格是否比另一種風格有任何好處。對我而言,一種風格只是沒有變量的名稱,變量的名稱必須在隨附的cpp文件中實現。
我想知道以下兩個聲明之間的區別是在頭文件 我所遇到這兩種風格函數原型文件
void some_method(int);
和第二風格是:
void some_method(int a);
一種風格是否比另一種風格有任何好處。對我而言,一種風格只是沒有變量的名稱,變量的名稱必須在隨附的cpp文件中實現。
有一個在功能上沒有區別,但我經常使用的參數名稱作爲文件的形式,像這樣:
void verbTheThing(int verbId, int thingId);
當我沒有什麼有價值的補充,我只是不添加:
int max(int, int);
主要問題是一致性。挑一個並堅持下去。我更喜歡第二個人,因爲參數名稱可以描述功能和自編寫代碼比替代方案更好的代碼。
+1;不過,我通常會對默認和刪除的特殊功能進行例外處理。 –
主要區別在於可讀性。第二個版本更長,但有了參數的名稱可能是一個真正的幫助。小例子:
int move(int, int, int, int);
int move (int fromX, int fromY, int toX, int toY);
兩者都沒有,就彙編而言有什麼區別。但第二個更好,因爲給參數命名會增加代碼的可讀性,並且可以幫助人們更好地理解它。
這兩個選項都是有效的。但是在頭文件中指定參數名稱可以極大地幫助讀取函數簽名的人快速找出它實際做了什麼以及參數代表什麼數據。
當您輸入(
括號時,某些開發環境(Visual Studio,Borland C++ Builder,例如eclipse也應該具有此功能)會自動列出函數參數。
對於那些集成開發環境是最起碼的禮貌確保函數參數名稱(頭內)儘可能的描述,因爲它們作爲文檔。
即使程序員沒有IDE使用此功能,轉發函數聲明(在標題中)應該始終儘可能描述。出於同樣的原因 - 打開頭文件並讀取函數參數意味着更容易,而不是在無數的*.cpp
文件中搜索函數體。
更不用說,在某些函數中,如果沒有參數名稱,您無法確定參數應該表示什麼。
例如,
Image::blitRect(int, int, int, int);
可能是
Image::blitRect(int x1, int x2, int y1, int y2);
Image::blitRect(int x1, int y1, int x2, int y2);
Image::blitRect(int x, int y, int width, int height);
當然,一個C++程序員會添加類在這種情況下點和尺寸,但這是另一個故事。
其實,它們之間沒有區別。 它歸結爲你聲明你的方法的地方... 例如,如果你在「main()」func之前聲明你的函數。 你可能不需要關心參數名稱。但是,在方法 聲明之前,您必須定義您的參數名稱。 它只是代碼風格,使您和任何人都可以閱讀代碼
保持聲明和定義相同 - 您可以輕鬆地在一個和另一個之間進行復制和粘貼 - 如果您覺得這並不容易使用簡短的表單來申報。 –
感謝這幫助 – MistyD
@PaulR好點。我可能會說我在將原型放入頭文件時努力去除無意義的(潛在分散注意力的)參數名稱。 –