if 条件判断语句

需求背景:

按照人的年纪计算票价。

  • 如果一个人不到10岁,不要钱
  • 如果这个人超过10岁,但是不到18岁,5元
  • 如果超过18岁。10元。

参考代码如下:

    public int getPrice(int age) {
        if (age <= 10) {
            return 0;
        }

        if (age > 10 && age <= 18) {
            return 5;
        }

        return 10;
    }

这段代码的逻辑是完全正确的。但是不推荐这样写代码。

先从计算机性能去考虑整件事,如果这个人超过了18岁,那么计算机会先做

  1. age <= 10
  2. age > 10
  3. age <= 18

然后才返回10。

正确代码如下:

    public int getPrice(int age) {
        if (age <= 10) {
            return 0;
        } else if (age <= 18) {
            return 5;
        } else {
            return 10;
        }
    }
这样计算机比较结果如下。
  1. age <= 10
  2. age <= 18

其实比较性能并不是我想去做表达的。两段代码给我的感觉是,第二段代码是说根据年龄不同做不一样的处理。

但是第一段代码的两个 if 并没有任何关系。我是看到判断的内容以后才知道他也是去根据年龄去做判断的。如果逻辑更加复杂的话,很难再脑子中判断是否所有的情况都考虑清楚了。

所以在开发过程中,重要的是把问题规划清楚,然后尽量用if else 去描述问题。而不是根据需求去把所有的if 罗列出来。那样思考的过程会很难,也难免出错。


你可能感兴趣的:(代码重构,refactor)