【问题标题】:Coding Style for passing boolean parameters传递布尔参数的编码风格
【发布时间】:2012-11-07 09:33:08
【问题描述】:

刚刚和同事讨论了一个方法,用法有点像这样:

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

现在这是我的问题,true 是做什么的?

显而易见的答案是查看方法定义并查看它对布尔值的作用,但我为什么需要这样做?是否有更好的编码风格可以在方法调用中解释布尔值的用途?

我最初想改变方法以接受特定的字符串,但这太松了。

我能想到的最好办法是创建一个本地布尔值,如下所示:

布尔 thisShouldBeUpperCased = true;

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

有没有人遇到过这种情况,有没有更好的方法?

【问题讨论】:

标签: styles boolean clarity


【解决方案1】:

通常在类似 C 的语言中,您可能会使用 const 或枚举来提高可读性,例如

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

enum {
    kDoNotConvertToUpperCase,
    kConvertToUpperCase
};

上述方法还允许可扩展性,例如如果设计最初为特定参数需要两个可能的选项,然后可以将其实现为布尔值,但后来变成三个(或更多)选项,需要一个 int 或一个 enum - 然后您不需要切换形式显式的 true/false 文字到它们的等效值。

例如

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

enum {
    kDoNotConvertToUpperCase,
    kConvertToUpperCase,
    kConvertToLowerCase
};

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-24
    • 2013-08-13
    • 1970-01-01
    • 2020-05-21
    相关资源
    最近更新 更多