首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为了更好的可读性,是否有可能重构和完全避免许多(如果是else )语句

为了更好的可读性,是否有可能重构和完全避免许多(如果是else )语句
EN

Stack Overflow用户
提问于 2016-11-30 20:30:03
回答 2查看 210关注 0票数 3

为了更好的可读性,是否有可能重构和完全避免许多(如果是else )语句。例如:

代码语言:javascript
复制
 function canIWatch(age) {
if (age < 6 && age > 0) return "You are not allowed to watch Deadpool after 6:00pm.";
else if (age >=6 && age < 17) return "You must be accompanied by a guardian who is 21 or older.";
else if (age >=17 && age < 25) return "You are allowed to watch Deadpool, right after you show some ID.";
else if (age >= 25 && age < 50 ) return "Yay! You can watch Deadpool with no strings attached!";
else if (age >= 50) return " You are too old to watch deadpool";
else return "Invalid age."
}

我如何在没有这么多语句的情况下编写更简洁的代码?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-11-30 20:33:54

您可以更改检查,从最小值开始,跳过其他部分,因为您返回。

代码语言:javascript
复制
function canIWatch(age) {
  if (age < 0) {
      return "Invalid age."
  }
  if (age < 6) {
      return "You are not allowed to watch Deadpool after 6:00pm.";
  }
  if (age < 17) {
      return "You must be accompanied by a guardian who is 21 or older.";
  }
  if (age < 25) {
      return "You are allowed to watch Deadpool, right after you show some ID.";
  }
  if (age < 50) {
      return "Yay! You can watch Deadpool with no strings attached!";
  }
  return "You are too old to watch deadpool";
}

console.log(canIWatch(-1));
console.log(canIWatch(2));
console.log(canIWatch(8));
console.log(canIWatch(20));
console.log(canIWatch(28));
console.log(canIWatch(60));

另一种解决方案是为术语使用带有对象的数组。

代码语言:javascript
复制
function canIWatch(age) {
    var terms = [
            { age: 0, text: "Invalid age." },
            { age: 6, text: "You are not allowed to watch Deadpool after 6:00pm." },
            { age: 17, text: "You must be accompanied by a guardian who is 21 or older." },
            { age: 25, text: "You are allowed to watch Deadpool, right after you show some ID." },
            { age: 50, text: "Yay! You can watch Deadpool with no strings attached!" },
            { age: Infinity, text: "You are too old to watch deadpool" },
        ],
        text;

    terms.every(function (a) {
        text = a.text;
        return a.age <= age;
    });
    return text;
}

console.log(canIWatch(-1));
console.log(canIWatch(2));
console.log(canIWatch(8));
console.log(canIWatch(20));
console.log(canIWatch(28));
console.log(canIWatch(60));

票数 6
EN

Stack Overflow用户

发布于 2016-11-30 20:35:35

如果你使用的是返回,那么你至少应该避免使用其他的,但是如果只使用

代码语言:javascript
复制
  function canIWatch(age) {
    if (age < 6 && age > 0) return "You are not allowed to watch Deadpool after 6:00pm.";
    if (age >=6 && age < 17) return "You must be accompanied by a guardian who is 21 or older.";
    if (age >=17 && age < 25) return "You are allowed to watch Deadpool, right after you show some ID.";
    if (age >= 25 && age < 50 ) return "Yay! You can watch Deadpool with no strings attached!";
    if (age >= 50) return " You are too old to watch deadpool"; 
    return "Invalid age."
  }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40897593

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档