Coding style 如果出现错误,则使用“切换”与“切换”;“好”;案例
我不太熟悉机器代码,但我认为这是一个非常简单的问题。Coding style 如果出现错误,则使用“切换”与“切换”;“好”;案例,coding-style,switch-statement,case,Coding Style,Switch Statement,Case,我不太熟悉机器代码,但我认为这是一个非常简单的问题。 如果我想通过函数返回的整数(而不是抛出异常的函数)进行错误处理,从机器代码的角度来看,更好的做法是: 检查条件语句中的整数是否有“坏”值,然后使用switch语句处理“坏”值,或 切换整数,并提供“好”值和“坏”值的大小写 例如,在C++中: enum error_code {E_GOOD, E_BAD, E_UGLY}; error_code func_b(); 选项1 void func_a() { error_code err
如果我想通过函数返回的整数(而不是抛出异常的函数)进行错误处理,从机器代码的角度来看,更好的做法是:
enum error_code {E_GOOD, E_BAD, E_UGLY};
error_code func_b();
选项1
void func_a()
{
error_code err_catch = func_b();
if (err_catch)
{
switch (err_catch)
{
case E_BAD:
/* Handle bad case */
break;
case E_UGLY:
/* Handle ugly case */
break;
}
}
}
选项2
void func_a()
{
error_code err_catch = func_b();
switch (err_catch)
{
case E_GOOD:
break;
case E_BAD:
/* Handle bad case */
break;
case E_UGLY:
/* Handle ugly case */
break;
}
}
谢谢您的帮助。第一个测试可能是:
if (err_catch != E_GOOD)
“发生错误”是明确的。顺便说一下,你的代码看起来就像是通过C++编译器。C不使用前面的枚举创建类型错误\u code
;您必须添加:
typedef enum error_code error_code;
就生成的代码而言,两者之间的差别很小
我可能会使用选项1(if
表示法)来明确开关只处理错误情况(因为它只需要处理错误情况),但如果将其提交给我进行代码审查,我也不会反对,我会直接使用switch
语句,这样编译器就可以确保switch
语句真正处理所有可能的值。啊,是的,忘记了C不执行自动typedef
s。对C++进行了微小的改动。现在你提到了,我记得编译器抱怨在代码< >开关<代码>中没有使用一个<代码> EnUM <代码>值,奇怪的是,它是<代码> EyGooule<代码>值。这是在一个catch
块中,因此我没有理由提供E_GOOD
案例,但编译器仍然对此发出警告。