如何降低这种情况下的复杂性?

问题描述:

如何降低许多ifs的复杂性以检查相同的值,我正试图清理我的代码,并且在这种情况下我面临非常高的复杂性!
P.S.它不是如果...其他情况下它只是很多如果抛出异常!如何降低这种情况下的复杂性?

void function(String text){ 
    if(text==null) 
    throw new exception(); 
    if(text.isEmpty()) 
    throw new Exception(); 
    if(text=="test") 
    throw new Exception(); 
    ..... } 
+2

“代码清理是指编写代码的行为,以便从内存和文件系统中清除剩余的数据结构和其他不需要的材料。**它与重构代码不一样,它使源代码本身更易于理解,维护和修改。 *“[codereview.se]已经结束了 Will

+0

I gu这是Java的。 C#有String.IsNullOrEmpty(s)。你可以做一个类似的功能 – pm100

由于每个条件做同样的事情,你可以让他们是不同的。但是,由于我不知道您正在使用的语言,因此可以使用“C#中的isNullOrEmpty()”来简化null和isempty检查,另外,您应该使用字符串比较来检验test =“test”。

最好是不要抛出异常,除非必要。

+0

谢谢你..我想我会用你的建议 –

如果文本为空或空白,则不必抛出异常,只需退出函数即可。抛出异常是代价高昂的。

if(test==null || text.isEmpty() || test="test" == 0) 
{ 
    throw new Exception(); 
} 

你不能因为他们删除这些情况:我会在同一个if语句检查这些状况由“OR”隔开,并退出功能,如果真

+0

是的,你是对的,但我正在使用jUnit写测试用例,所以我必须测试我的代码中的每一行。你对这种情况的建议是什么? –

+0

我必须忽略检查null和空吗? –

+1

您究竟如何体验高度复杂? –

你可以这样做:

if (string.IsNullOrEmpty(text)) 
{ 
    throw new Exception(); 
} 

或者,如果你只想要的代码执行时text不为空或为空,你可以这样做:

if (!string.IsNullOrEmpty(text)) 
{ 
    // do something 
}