假如需求如下
一个程序猿的相亲要求:
1、女的
2、年龄小于23
3、身高大于1米6
4、体重小于130斤
public class Girl {
public static String gender;
public static int age;
public static int height;
public static int weight;
}
public class One {
public static void main(String[] args) {
method1();
method2();
}
private static String method1() {
if (Girl.gender.equals("女")) {
if (Girl.age < 23) {
if (Girl.height > 160) {
if (Girl.weight < 130) {
// 准备相亲
prepareDate();
} else {
System.out.println("原因:我不喜欢胖子");
return "不接受";
}
} else {
System.out.println("原因:我不喜欢矮子");
return "不接受";
}
} else {
System.out.println("原因:我不喜欢年龄大的");
return "不接受";
}
} else {
System.out.println("原因:我不喜欢男人");
return "不接受";
}
return "去相亲";
}
private static String method2() {
if (Girl.gender.equals("男")) {
System.out.println("原因:我不喜欢男人");
return "不接受";
}
if (Girl.age > 23) {
System.out.println("原因:我不喜欢年龄大的");
return "不接受";
}
if (Girl.height < 160) {
System.out.println("原因:我不喜欢矮子");
return "不接受";
}
if (Girl.weight > 130) {
System.out.println("原因:我不喜欢胖子");
return "不接受";
}
// 准备相亲
prepareDate();
return "去相亲";
}
private static void prepareDate() {
System.out.println("准备相亲");
}
}
以客户为中心,从需求出发的话,
方式一其实更符合需求描述,写代码和质量检查时候也更顺心一些;
方式二看似简单,代码整洁,但是判断逻辑跟需求拧着来,看着好别扭。更可怕的是可能会漏掉判断条件,例如需求判断如果是“女”则继续,方式二判断为男则停止,但是遇到未知性别的时候显然就不符合需求了。



