可以考虑使用 case 而不是 if-then-else 语句。如果有不同的情况,那么代码就会进行正确的选择。这将节省时间,而无需经历所有事情。
If f_op is v_op then
If o_op == f_op then
If (o_r_type == "C" AND f_r_type == "D") OR
(o_r_type == "D" AND f_r_type == "C") OR
(o_r_type == "C" AND f_r_type == "C") then
do nothing
else if o_r_type == "D" AND f_r_type == "D" then
v_b.add(i)
else if o_op_cat == f_op_cat then
v_b.add(i)
如何修改上面的伪代码并使用case语句代替if-then-else。
假设
f_r_type
和 o_r_type
的可能值为“C”和“D”(已在注释中确认),需要注意以下几点:
当执行
if o_r_type == "D" AND f_r_type == "D" then
时,该条件将始终为真:所有其他可能性已被先前的if
条件排除。
相关:较长的
if
条件(具有三个组合测试)测试与下一个 if
条件相反的条件,因此您可以仅使用下一个条件来减少代码。
前两个
if
语句可以合并为一个 if
语句。
由于只有一项操作已执行或未执行 (
v_b.add(i)
),因此您只需要一个 if
语句即可将其所有条件组合为一个。
如果你的代码是这样写的,也会做同样的事情:
if (f_op == v_op AND ((o_r_type == "D" AND f_r_type == "D")
OR (o_op_cat == f_op_cat)) then
v_b.add(i)
这里使用
switch
语句没有任何好处,因为你实际上只有一种情况。