在语句中设置条件检查格式"if"最佳方法
Best way to format the conditional checks in "if" statement
这段代码看起来很脏,我不知道如何格式化它,以便我可以阅读,理解它,同时看起来很干净。
if(center==2 && ((((y-height/2)==j) && ((x+width/2)==i)) || (((y+height/2)==j) && ((x+width/2)==i))))
regenerateDot(i+1, j, dots);
有什么建议吗?
我会将布尔表达式分解为以可读性命名的变量。比如:
bool isCentered = center == 2;
bool inLowerRegion = (y-height/2) == j && (x+width/2) == i;
bool inUpperRegion = (y+height/2) == j && (x+width/2) == i;
bool inEitherRegion = inLowerRegion || inUpperRegion;
if (isCentered && inEitherRegion) {
regenerateDot(i+1, j, dots);
}
考虑重构。您可以将子表达式放入它们自己的函数中,从而命名它们的用途。
例如:if (IsCentered(center) && IsInsideLower(y, j, i) && IsInsideUpper(y, j, i))
regenerateDot(i + 1, j, dots);
请注意,在上面的例子中,函数名可能是假的(我并没有真正试图理解代码的目的是什么),但您应该了解情况。
几乎所有的括号都是多余的…加上一些空格就变成了:
if(center == 2 &&
(y - height/2 == j && x + width/2 == i ||
y + height/2 == j && x + width/2 == i))
regenerateDot(i+1, j, dots);
对于一些复杂的东西,我可能会将其分解为每个条件(按共享&&分组)试图表示的内容,并将其分配给一个合理的变量名。
您最多可以删除额外的大括号,添加一些空格并将逻辑分区放在不同的行中,如
if(center == 2 &&
(((y - height/2) == j || (y + height/2) == j) && (x + width/2) == i))
{
regenerateDot(i+1, j, dots);
}
编辑:您有一个冗余条件(x + width/2) == i
,我在这里进行了优化。
这与您发布的代码相同:
if( center == 2 )
{
if( (x+width/2) == i )
{
if( (y-height/2) == j ) || (y+height/2) == j ) )
{
regenerateDot(i+1, j, dots);
}
}
}
重新排序会得到如下内容:
if (center==2 && (i-x)==(width/2) && abs(j-y)==(height/2))
regenerateDot(i+1, j, dots);
我想这样做
if (2 == center &&
(((y - height/2) == j && (x + width/2) == i) ||
((y + height/2) == j && (x + width/2) == i))
)
{
regenerateDot(i + 1, j, dots);
}
相关文章:
- 在C#中处理C++指针而不使用unsafe的最佳方法
- 在C++中,将大的无符号浮点数四舍五入为整数的最佳方法是什么
- 实现无开销push_back的最佳方法是什么
- 我的简单if-else语句是如何无法访问的代码
- 如何将enable-if与模板参数和参数包一起使用
- 无论条件是否为true,if总是在c++中执行
- Arduino:for/while/if在void setup()或void loop()之前?——错误:之前需要不合格
- 在c代码之间共享数据的最佳方式
- 使用std::source_location报告错误的最佳实践
- 派生类销毁的最佳实践是什么
- Insert函数不适用于2 if语句C++
- If语句未被求值C++
- C++嵌套if语句,基本货币交换
- 多个If语句与使用逻辑运算符计算条件的单个语句的比较
- 是否可以使用if constexpr删除控制流语句
- 要与"if constexpr"一起使用的编译时消息(在预处理器之后)
- 如何删除peer if else分支中的冗长句子
- 将字符串中的特定单词与c 中的if或while进行比较的最佳方法
- 使用来自同一个bool c++的两个if语句的最佳实践
- 在语句中设置条件检查格式"if"最佳方法