【发布时间】:2012-04-27 21:10:13
【问题描述】:
我已经阅读了很多关于代码重构和避免 if else 语句的主题。实际上,我有一门课使用了很多 if - else 条件。
更多细节:我正在使用拉解析器,在我的肥皂响应的每一行,我会检查是否有我感兴趣的标签,如果没有,检查另一个标签等:
if(eventType == XmlPullParser.START_TAG) {
soapResponse= xpp.getName().toString();
if (soapResponse.equals("EditorialOffice")){
eventType = xpp.next();
if (xpp.getText()!=null){
editorialOffice += xpp.getText();
}
}
else if (soapResponse.equals("EditorialBoard")){
eventType = xpp.next();
if (xpp.getText()!=null){
editorialBoard += xpp.getText();
}
}
else if (soapResponse.equals("AdvisoryBoard")){
eventType = xpp.next();
if (xpp.getText()!=null){
advisoryBoard += xpp.getText();
}
}
}
eventType = xpp.next();
}
现在,我想使用别的东西,而不是那些 if else 条件,但我不知道是什么。
你能举个例子吗?
【问题讨论】:
-
您可以在程序的其他地方维护字符串到枚举的映射,从映射中提取与返回的字符串关联的枚举(如果字符串不在map) 并在枚举上写一个 switch 语句。它可能会使这段代码更清晰,但代价是额外的间接层。你必须判断这是否值得。
-
检查这个:stackoverflow.com/questions/519422/…希望这有帮助
-
旁注,出于性能原因,您应该使用 StringBuilder 而不是 += 将字符串连接在一起。
-
谢谢 Sam Barnum,如何使用字符串生成器?我会尝试在互联网上检查,但一个例子会很棒。
-
StringBuilder sb = new StringBuilder(); sb.append(editorialBoard); sb.append(xpp.getText); editorialBoard=sb.toString();
标签: java if-statement refactoring