我在寫一些java代碼來檢查if-else的多個條件。代碼工作正常,但很難做單元測試。簡化單元測試的多個if-else語句
讀取包含關鍵字conditionOne
,conditionTwo
或其他關鍵字的行。 hasConditionOneEnabled
和hasConditionTwoEnabled
是布爾值。
我的真實代碼比提供的例子有更多的else if
語句。 任何人都可以幫忙嗎?或者給我一些提示如何使代碼更短,然後我可以更輕鬆地編寫單元測試?謝謝
boolean a = false;
boolean b = false;
if(line.contains("conditionOne")){
if(hasConditionOneEnabled){
a = true;
}else{
b = true;
}
}else if (line.contains("conditionTwo")){
if(hasConditionTwoEnabled){
a = true;
}else{
b = true;
}
}else{
a = true;
b = true;
}
if(a && b){
// do something 1
}else if(!a && b){
// do something 2
}else if(a && !b){
// do something 3
}else{
//both false, do nothing
}
過於複雜的條件語句是[反模式](http://c2.com/cgi/wiki?ArrowAntiPattern)。另請參閱[重構它的這個問題](http://stackoverflow.com/questions/105602/need-refactoring-ideas-for-arrow-anti-pattern)。 – azurefrog
用a和b創建一個類,並將條件體作爲單獨的方法提取。 – assylias