Coding style 级联布尔逻辑
对于这个问题的抽象性质,我有点怀疑,但尽管我正在考虑用java或c#之类的语言实现,但目前让我感到有点困扰的通常是这个概念 对于大多数语言,当使用布尔逻辑进行测试时,只有一个答案是有效的Coding style 级联布尔逻辑,coding-style,boolean,Coding Style,Boolean,对于这个问题的抽象性质,我有点怀疑,但尽管我正在考虑用java或c#之类的语言实现,但目前让我感到有点困扰的通常是这个概念 对于大多数语言,当使用布尔逻辑进行测试时,只有一个答案是有效的 if (fridgeDoorClosed !=true) closeFridge(); else eatSandwich(); 但是,当多条路径可能是正确的时,该怎么办?假设在网页上的表单中,用户使用复选框选择他/她希望看到的内容。要做到这一点,一个非常不雅观的方法是: if ((checkbox1==tru
if (fridgeDoorClosed !=true)
closeFridge();
else
eatSandwich();
但是,当多条路径可能是正确的时,该怎么办?假设在网页上的表单中,用户使用复选框选择他/她希望看到的内容。要做到这一点,一个非常不雅观的方法是:
if ((checkbox1==true)&&(checkbox2==true)&&(checkbox3==true))
blah
else if
((checkbox1==true)&&(checkbox2==true)&&(checkbox3==false))
blah
等等,当然要注意秩序
在java和c#等语言中,可以使用case switch语句,而不使用常用的break语句来强制级联。但是,这种方法是否可以实际使用呢 通常我会这样做:
if( checkbox1) {
if( checkbox2) {
if( checkbox3) {
// all three
}
else {
// a, b, not c
}
}
// .......
}
但根据具体情况,您可以这样做:
boxes = (checkbox1?1:0)+(checkbox2?2:0)+(checkbox3?4:0);
switch(boxes) {
case 0: // no boxes
break;
case 1: // box 1, not 2 or 3
break;
case 2: // box 2, not 1 or 3
break;
// ........
}
论坛中已经有类似的内容-> 若你们懂波兰语,你们可以看一场关于“若得不到自由”的演讲 如果你不懂波兰语,作者会说: a) 最重要的是可读性(非工作,但可读代码比工作和不可读代码更好) b) 什么代码(3个代码中的一个)是最好的?这取决于许多条件(例如,如果你与大学生一起工作,最好的方法很简单,如果你为图形引擎编写代码,请使用“数学”) p、 在c#if语句中,你不需要写“=true”
if ((checkbox1)&&(checkbox2)&&(checkbox3)
blah
我认为你们的开关断路器,包括所有可能的组合,似乎最有可能工作。嵌套的if语句很难获得100%的正确性。不幸的是,这仍然需要相当多的案例(3个选项10个可能的案例,4个选项17个,等等)