Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/404.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 当您有多个条件时,编写更好/干净的IF语句的最佳方法是什么?_Javascript_If Statement_Refactoring - Fatal编程技术网

Javascript 当您有多个条件时,编写更好/干净的IF语句的最佳方法是什么?

Javascript 当您有多个条件时,编写更好/干净的IF语句的最佳方法是什么?,javascript,if-statement,refactoring,Javascript,If Statement,Refactoring,我想重构一些在一些遗留代码中遇到的if语句,使它们更易于阅读 例如: if (condition1 || condition2 || condition3 || condition4 || condition5 || condition6 || condition7) 我考虑将长条件列表存储在一个变量中,给它一个描述性名称,并在if语句中使用该变量名称。拥有可读的代码首先是一个表示问题 你能行 if((条件1) ||(条件2) ||(条件3) ||(条件4) ||(条件5) ||(条件6)

我想重构一些在一些遗留代码中遇到的
if
语句,使它们更易于阅读

例如:

if (condition1 || condition2 || condition3 || condition4 || condition5 || condition6 || condition7) 

我考虑将长条件列表存储在一个变量中,给它一个描述性名称,并在
if
语句中使用该变量名称。

拥有可读的代码首先是一个表示问题

你能行

if((条件1)
||(条件2)
||(条件3)
||(条件4)
||(条件5)
||(条件6)
) {
//有事要做。。。
}
或:
(黑暗和晦涩的方法保留给恶魔编码师的成员)

开关(真){
案例(条件1):
案例(条件2):
案例(条件3):
案例(条件4):
案例(条件5):
案例(条件6):
//有事要做。。。
打破
}
[编辑]
还可以使用缩进显示条件的层次结构:

if ( (condition1)
  || (condition2)
  || ( (condition3-1)
    && (condition3-2)
    && (condition3-3)
    )
  || (condition4)
  || (condition5)
  || (condition6)
  ) {
    // something to do...
  }

拥有可读的代码首先是一个表示问题

你能行

if((条件1)
||(条件2)
||(条件3)
||(条件4)
||(条件5)
||(条件6)
) {
//有事要做。。。
}
或:
(黑暗和晦涩的方法保留给恶魔编码师的成员)

开关(真){
案例(条件1):
案例(条件2):
案例(条件3):
案例(条件4):
案例(条件5):
案例(条件6):
//有事要做。。。
打破
}
[编辑]
还可以使用缩进显示条件的层次结构:

if ( (condition1)
  || (condition2)
  || ( (condition3-1)
    && (condition3-2)
    && (condition3-3)
    )
  || (condition4)
  || (condition5)
  || (condition6)
  ) {
    // something to do...
  }

我认为在这种情况下最好的方法是合并条件表达式。可以在一个函数中组合所有条件

function isConditionsCorrect() {
    return (condition1)
        || (condition2)
        || (condition3)
        || (condition4)
        || (condition5)
        || (condition6);
} 

if (isConditionsCorrect()) return 0;

我认为在这种情况下最好的方法是合并条件表达式。可以在一个函数中组合所有条件

function isConditionsCorrect() {
    return (condition1)
        || (condition2)
        || (condition3)
        || (condition4)
        || (condition5)
        || (condition6);
} 

if (isConditionsCorrect()) return 0;

如果你在多个地方使用这些条件,那么你的解决方案是好的。因此,它只会添加更多的代码。如果你有一个时间批评家算法,经常询问这个条件,你可以对这些条件进行排序,如果你知道一个条件通常是正确的,那么把它放在最开始的地方,而其他条件则不需要证明。如果使用&&than,则将通常为false的条件放在开头。在这种情况下,switch case语句可能更合适case@NataliaDuran一个描述性的名称仍然是一个好主意,即使您只使用了一次变量:-)如果您正在寻找更多的替代方案,请发布您的真实代码,以便我们可以提出适当的建议,这可能是特定于您的用例的。如果您在多个位置使用这些条件,您的解决方案是好的。因此,它只会添加更多代码如果您有一个时间批评家算法,其中经常会询问此条件,您可以对条件进行排序,如果你知道其中一个经常是真的,那就把它放在最开始的地方,其他的就不需要证明了。如果使用&&than,则将通常为false的条件放在开头。在这种情况下,switch case语句可能更合适case@NataliaDuran一个描述性的名称仍然是一个好主意,即使您只使用了一次变量:-)如果您正在寻找更多的替代方案,请发布您的真实代码,以便我们可以提出适当的建议,这可能是特定于您的用例的。不,请不要这样做。OP要求的是更干净的方式,而不是更模糊的方式。不,请不要这样做。OP要求的是更干净的方式,而不是更模糊的方式。