2012-11-07 55 views
2

我只是討論與同事的方法,使用看起來有點像這樣:編碼樣式傳遞布爾參數

字符串的myString =的getString(字段[10],TRUE);

現在這裏是我的問題,true是做什麼的?

顯而易見的答案是查看方法定義並查看它對布爾值的作用,但爲什麼我需要這樣做呢?有沒有更好的編碼風格來解釋方法調用中布爾右鍵的用途?

我以爲最初改變方法來接受一個特定的字符串,但這太鬆了。

我能想出的最好的辦法是創建一個本地布爾值,像這樣:

布爾thisShouldBeUpperCased = TRUE;

String myString = getString(fields [10],thisShouldBeUpperCased);

有沒有人遇到過這個,有沒有更好的方法?

+0

有關於這對程序員網站一個很好的討論。 http://programmers.stackexchange.com/questions/147977/is-it-wrong-to-use-a-boolean-parameter-to-determine-behavior/148058#148058 –

回答

0

通常,在C語言中,您可以使用常量或枚舉來提高可讀性,例如,

const bool kConvertToUpperCase = true; 
const bool kDoNotConvertToUpperCase = false; 

enum { 
    kDoNotConvertToUpperCase, 
    kConvertToUpperCase 
}; 

上述方法還允許可擴展性,例如如果一個設計最初要求爲特定參數提供兩個可能的選項,然後可以將它們實現爲一個布爾值,但是稍後它會變成三個(或更多)選項,需要一個int或一個枚舉 - 您不需要切換表單顯式的true/false文字到處都是它們的等價值。

E.g.

const int kConvertToLowerCase = 2; 
const int kConvertToUpperCase = 1; 
const int kDoNotConvertToUpperCase = 0; 

enum { 
    kDoNotConvertToUpperCase, 
    kConvertToUpperCase, 
    kConvertToLowerCase 
};