c语言的语句,c语言赋值语句规则
函数中的条件逻辑使正常的执行路径变得不明显。 使用卫文表达一切特殊情况。
动机:条件式通常有两种表现形式。 第一,所有分歧都是常规行为。 第二,条件式提供的答案中,只有一个是正常的动作,其他是不常见的情况。
这两种条件式有不同的用途。 如果两个分支都是正常行为,则很少有条件应该使用表达式(如if……else……),则应该单独检查条件,如果条件为真,则应该立即从函数中返回。 这种单独检查常常被称为“卫语句”。
replacenestedconditionalwithguardclauses (用保护语句替换嵌套表达式)的精髓是对某个分支给予特别的重视。 这是罕见的。 如果那个真的发生了的话,请进行必要的整理工作后再退出。
卫生词语
如果代码中条件语句过多,建议将多层条件语句更改为保护语句或其他方式
我建议尽量不要用else。 if-else方式可以改写如下。
if(condition ) {
.
返回对象;
}
//接着写else的商业逻辑代码
保护语句是指将复杂的条件式分割为多个条件式。 例如,是非常复杂的公式。 嵌套多层的if - then-else语句被转换为多个if语句以实现其逻辑。 这多个if语句是保护语句。
if(obj!=空) {
doSomething (;
}
转换为保护语句后的代码如下:
if(obj==null ) {
返回;
}
doSomething (;
表达式实际执行嵌套次数为n次,其他分支可能只是返回错误。 在这种情况下,“保护语句”(guard clauses )就是单独检查返回错误的分支,如果条件为真,则立即返回。 保护语句可以使我们的视线摆脱异常处理,集中在通常处理的代码上。
例1
修正前
是语音功能(语音)
{
if(isworkday ) )
{
printf (错误,is work day );
}
else
{
if(isworktime ) )
{
printf (错误,is work time );
}
else
{
rest (;
}
}
修正后
void func () )
{
if(isworkday ) )
{
printf (错误,is work day );
返回;
}
if(isworktime ) )
{
printf (错误,is work time );
返回;
}
rest (;
}
例2
修正前
双字节获取yamount (
{
双结果;
if(isdead () ) ) )。
result=DeadAmount (;
}
else {
if(isseparated () ) }
结果=separated amount (;
} else {
if(isretired () ) }
result=RetiredPayAmount (;
} else {
result=NormalPayAmount (;
}
}
}
返回结果;
}
修正后
双字节获取yamount (
{
if(isdead () ) ) )。
return deadPayAmount (;
}
if(isseparated () ) }
返回separatedpayamount (;
}
if(isretired () ) }
return retiredPayAmount (;
}
返回normalpayamount (;
}
总结
函数中的if条件逻辑会导致难以看到正常的分支执行路径。 使用卫文表达一切特殊情况。
卫文是指,如果某个条件极为罕见,就应该单独检查该条件,如果该条件为真,就应该立即从函数中返回。 这种单独检查常常被称为“卫语句”。
————————————————