【问题标题】:Is using if/else if/else this way a good practice?以这种方式使用 if/else if/else 是一种好习惯吗?
【发布时间】:2023-03-14 22:02:01
【问题描述】:

我正在开发一个我们从以前的供应商那里继承的应用程序以及客户端 javascript 中的许多地方我看到这样的内容:

if (self.DESIGNEE_TYPE_SCREEN_ROUTE_REGEX.test(url)) {
    goToSelectDesigneeType.call(self);
} else if (self.FUNCTION_CODES_SCREEN_ROUTE_REGEX.test(url)) {
    goToSelectFunctionCodes.call(self);
} else if (self.DISCIPLINE_SCREEN_ROUTE_REGEX.test(url)) {
    goToSelectDiscipline.call(self);
} else {
    goToSelectDesigneeType.call(self);
} else ...

这用于进入工作流程中的下一步,它工作正常,但它的某些内容并不适合我。这很常见吗,还是有更好的方法来做同样的事情?

【问题讨论】:

  • 强烈建议您使用switch语句。
  • 如果这是有效的代码,你最好在codereview.stackexchange.com
  • Switch 语句要好得多。此外,在 if / if else / else 块中只能有一个 else。
  • 我认为这会对您有所帮助。 stackoverflow.com/questions/2922948/…
  • 您可以创建一个数组,其中每个元素都包含一个正则表达式和要调用的函数,然后对其进行迭代,直到找到匹配项;但我怀疑这是否值得。

标签: javascript


【解决方案1】:

你可以在这里使用switch(true) idiom。

switch(true) {
  case self.DESIGNEE_TYPE_SCREEN_ROUTE_REGEX.test(url) :
    goToSelectDesigneeType.call(self);
    break;
  case self.FUNCTION_CODES_SCREEN_ROUTE_REGEX.test(url) :
    goToSelectFunctionCodes.call(self);
    break;
  case self.DISCIPLINE_SCREEN_ROUTE_REGEX.test(url) :
    goToSelectDiscipline.call(self);
    break;
  default :
    goToSelectDesigneeType.call(self);
}

只是我的意见,这更容易阅读。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-18
    • 1970-01-01
    • 2012-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-16
    相关资源
    最近更新 更多