0
点赞
收藏
分享

微信扫一扫

搏击与防卫笔记

boomwu 2024-07-24 阅读 31
  • 我们在开发过程中,有时候会遇到多个布尔值条件判断的情况,目前我们项目里的写法大多都是将各种判断糅杂在一起,这样非常不利于阅读和维护。
  • 这里给大家推荐下谷歌官方的处理方式。
  • 主要有两种优化方案。

例如,一个判断条件如下:

if ((!pepperoniService.empty() || sausages.size() > 0) && (useOnionFlag.get() || hasMushroom(ENOKI, PORTOBELLO)) && hasCheese()) {

  ...

}

第一步,将条件提取为一个命名准确的变量:

const isPizzaFantastic = (!pepperoniService.empty() || sausages.size() > 0) && (useOnionFlag.get() || hasMushroom(ENOKI, PORTOBELLO)) && hasCheese();


if (isPizzaFantastic) {
  ...
}

方法一,将布尔值分类:

const hasGoodMeat = !pepperoniService.empty() || sausages.size() > 0;
const hasGoodVeggies = useOnionFlag.get() || hasMushroom(ENOKI, PORTOBELLO);
const isPizzaFantastic = hasGoodMeat && hasGoodVeggies && hasCheese();

if (isPizzaFantastic) {
  ...

}

方法二,将逻辑隐藏在单独的方法中,用卫语句将条件提前返回:

function isPizzaFantastic() {
  if (!hasCheese()) {
    return false;
  }
  if (pepperoniService.empty() && sausages.size() == 0) {
    return false;
  }
  return useOnionFlag.get() || hasMushroom(ENOKI, PORTOBELLO);

}
举报

相关推荐

0 条评论