将一个条件从else语句中拆分出来导致的bug
将一个条件从else语句中拆分出来,拆成一个新的else if分支,不能忘记要把原来else中的代码逻辑复制一份过来。或者直接在原来的else中直接写条件判断,执行特定条件下的代码逻辑。
方法run2和run3是对run1方法里else中b==1条件进行拆分,进行其它操作。使用run2形式不能忘记将原来else中的代码逻辑复制一份过来,推荐使用run3方式。
1 package com.alphajuns.test; 2 3 import java.util.Random; 4 5 import org.junit.Test; 6 7 public class DemoTest { 8 9 @Test 10 public void run1() { 11 int a = 0; 12 Random r = new Random(); 13 int b = r.nextInt(4); 14 if (b == 0) { 15 a = 0; 16 } else { 17 a = 1; 18 } 19 System.out.println("a的值:" + a); 20 System.out.println("b的值:" + b); 21 } 22 23 @Test 24 public void run2() { 25 int a = 0; 26 Random r = new Random(); 27 int b = r.nextInt(4); 28 if (b == 0) { 29 a = 0; 30 } else if (b == 1) { 31 a = 1; // 将b==1条件从else中拆出来不能忘记原来else中对a赋值1的代码拿过来 32 System.out.println("b的值为1是要执行的操作"); 33 } else { 34 a = 1; 35 } 36 System.out.println("a的值:" + a); 37 System.out.println("b的值:" + b); 38 } 39 40 @Test 41 public void run3() { 42 int a = 0; 43 Random r = new Random(); 44 int b = r.nextInt(4); 45 if (b == 0) { 46 a = 0; 47 } else { 48 if (b == 1) { // 在else内部写b==1条件下的操作 49 System.out.println("b的值为1是要执行的操作"); 50 } 51 a = 1; 52 } 53 System.out.println("a的值:" + a); 54 System.out.println("b的值:" + b); 55 } 56 57 }