You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何优化JavaScript中的if-else条件判断结构?

优化语音建议生成代码:从冗余if-else到简洁逻辑

原问题代码

const makeRecomendations = (wordsPerMinute, newAverage) => {
  if (wordsPerMinute <= 119 && (newAverage >=5 && newAverage <=8) && output.length < 1) return 'Увеличьте скорость речи'
  else if (wordsPerMinute <= 119 && newAverage <=5 && output.length < 1) return 'Увеличьте скорость речи\nГоворите громче'
  else if (wordsPerMinute <= 119 && newAverage >=8 && output.length < 1) return 'Увеличьте скорость речи\nГоворите тише'
  else if (wordsPerMinute <= 119 && (newAverage >=8) && output.length >= 1) return 'Увеличьте скорость речи\nГоворите тише\nКонтролируйте употребление слов паразитов'
  else if (wordsPerMinute <= 119 && (newAverage <=5) && output.length >= 1) return 'Увеличьте скорость речи\nГоворите громче\nКонтролируйте употребление слов паразитов'
  else if (wordsPerMinute <= 119 && (newAverage >=5 && newAverage <=8) && output.length >= 1) return 'Увеличьте скорость речи\nКонтролируйте употребление слов паразитов'
  else if (wordsPerMinute >= 180 && (newAverage >=5 && newAverage <=8) && output.length < 1) return 'Не торопитесь во время доклада'
  else if ((wordsPerMinute >= 119 && wordsPerMinute <= 180) && newAverage <=5 && output.length < 1) return 'Говорите громче'
  else if ((wordsPerMinute >= 119 && wordsPerMinute <= 180) && newAverage >=8 && output.length < 1) return 'Говорите тише'
  else if ((wordsPerMinute >= 119 && wordsPerMinute <= 180) && (newAverage >=5 && newAverage <= 8) && output.length >= 1) return 'Контролируйте употребление слов паразитов'
  else if ((wordsPerMinute >= 119 && wordsPerMinute <= 180) && newAverage <=5 && output.length >= 1) return 'Говорите громче\nКонтролируйте употребление слов паразитов'
  else if (wordsPerMinute >=180 && newAverage <=5 && output.length >= 1) return 'Не торопитесь во время доклада\nГоворите громче\nКонтролируйте употребление слов паразитов'
  else if (wordsPerMinute >=180 && (newAverage >=5 && newAverage <= 8) && output.length < 1) return 'Не торопитесь во время доклада'
  else if (wordsPerMinute >=180 && (newAverage >=5 && newAverage <= 8) && output.length >= 1) return 'Не торопитесь во время доклада\nКонтролируйте употребление слов паразитов'
  else if (wordsPerMinute <= 119 && (newAverage >=5 && newAverage <= 8) && output.length >= 1) return 'Увеличьте скорость речи'
  else return "Вы потрясающий спикер!"
}

优化思路与代码

核心是把多维度的判断条件拆分成独立逻辑,用数组收集符合条件的建议,最后合并成字符串,避免重复判断和冗余代码:

const makeRecomendations = (wordsPerMinute, newAverage, output) => {
  const recommendations = [];

  // 语速相关建议
  if (wordsPerMinute <= 119) {
    recommendations.push('Увеличьте скорость речи');
  } else if (wordsPerMinute >= 180) {
    recommendations.push('Не торопитесь во время доклада');
  }

  // 音量相关建议
  if (newAverage <= 5) {
    recommendations.push('Говорите громче');
  } else if (newAverage >= 8) {
    recommendations.push('Говорите тише');
  }

  // 赘语控制建议
  if (output.length >= 1) {
    recommendations.push('Контролируйте употребление слов паразитов');
  }

  // 无建议时返回赞美
  return recommendations.length > 0 
    ? recommendations.join('\n') 
    : "Вы потрясающий спикер!";
}

优化点说明

  • 可读性提升:把语速、音量、赘语三个维度的判断完全拆分,逻辑清晰,一眼能看懂每个条件对应的建议
  • 维护性增强:新增或修改建议时,只需在对应区块添加逻辑,不用修改冗长的if-else链
  • 消除冗余:原代码中重复的字符串(比如"Увеличьте скорость речи")只出现一次,避免重复维护
  • 健壮性提升:原代码存在重复的条件分支(比如第7和第13行逻辑完全一致),优化后彻底消除这类问题

内容的提问来源于stack exchange,提问作者Proger228

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 18:55:30