我一直在进行大量的代码审查,并一直遇到一种情况,我看到有关布尔变量和if语句的编码标准存在冲突。
以下是一种方法(1)的示例:
boolean isXTrue = getBooleanValue(DataSetX);
if (isXTrue) {
//do code
}
以下是另一种方法(2)的示例:
if (getBooleanValue(DataSetX)) {
//do code
}
两者都做同样的事情并且功能正常。在某些情况下,方法1更具可读性,因为布尔变量可以被命名为有意义的东西,而方法2可以保存更多的行和不必要的布尔变量创建。
也许我正在深入阅读一个简单的编码标准,但我很好奇,如果我们更频繁地使用方法1,我们可能会制作不必要的布尔值。
很抱歉,如果这是一个愚蠢的问题,但我想得到一些意见:)
答案 0 :(得分:2)
编译器可能会优化这两种情况,以便在运行时两种方式都相同。当然,这取决于您提供的上下文之外的代码。
至于整个问题:你和你的同事或团队需要达成共识。如果您正在寻找关于选择哪一个的明确答案,除了个人对可读性与行数的偏好之外,我不会认为您会获得任何令人信服的信息。
与维护代码库的其他人讨论此问题,并决定哪些应该是首选。清楚地解释原因。然后继续讨论更多...错误...重要问题。
至于我的偏好?我喜欢选项1.对我来说,它更具可读性,变量名称可以是描述性的,如isActive
,这使代码更容易阅读。此外,在调试期间检查值可能更容易,因为您有一个确定的变量,在它稍后在链中使用之前可以引用它。再次,那是我的偏好。