2012-11-07 37 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 
};