在编写代码时,我注意到我开始养成不使用if- get语句的习惯,而else块只有一行代码。例如,如果我有可以像这样求解的代码:
public Person(int initialAge) {
if(initialAge < 0){
System.out.println("Age is not valid, setting age to 0.");
age = 0;
}
else{
age = initialAge;
}
}相反,我将完全删除else语句,以减少几行代码。这使我的代码看起来更像这样:
public Person(int initialAge) {
age = initialAge;
if(initialAge < 0){
System.out.println("Age is not valid, setting age to 0.");
age = 0;
}
}我想知道这是否是一个坏的编码习惯,我是否应该打破这种编码习惯,或者继续这样做是否可以。当我谈到更复杂的程序时,这样做会不会是一个更大的问题呢?
编辑:只是想提供一些更多的信息,为什么部分代码是这样写的。提供的代码段是编码挑战的一部分,其中一个要求是将输入的任何负数设置为0。
发布于 2016-12-18 19:18:13
IllegalArgumentException,或者如果您想要自定义它,也可以创建用户定义的异常。发布于 2016-12-18 17:37:20
我在这里看到的最大问题是,您正在向System.out打印一条警告消息,然后对一些听起来像是异常的东西使用默认值。
为什么要允许负值呢?
if (initialAge < 0) {
throw new IllegalArgumentException("Initial age cannot be negative, was specified as " + initialAge);
}
age = initialAge;这样,总是由调用方传递一个有效年龄,而不是默认为零的方法,这将带来其他问题。与其打印一条可能表示错误的警告消息,不如让您的程序因错误而提前中断。
发布于 2016-12-19 11:30:19
将主要功能放在输入验证之前。要么先核实
if(!foo) {
throw new IllegalArgumentException("not foo");
}
doStuff();或者首先使用具有主要功能的if- the。
if(foo) {
doStuff();
} else {
handleWrongFoo();
}对我来说,你的解决方案中最丑陋的部分是做一些无效的事情,然后说“不,等等”。
do {
doStuff();
} ormaybeif(!foo) {
handleWrongFoo();
}https://codereview.stackexchange.com/questions/150215
复制相似问题