我已经阅读了很多有关代码重构和避免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(); }
现在,我想使用somethimg,而不是其他条件,但是我不知道是什么。
您能给我一个例子还是一个很好的教程页面?
谢谢。
在这种特定情况下,由于除了这三个字符串之外的所有代码,代码在本质上都是相同的,因此对于每个要构建的字符串,我都会有一个映射条目:
Map<String,String> map = new HashMap<String,String>(); map.put("EditorialOffice",""); map.put("EditorialBoard",""); map.put("AdvisoryBoard",""); // could make constants for above Strings, or even an enum
然后将您的代码更改为以下内容
if(eventType == XmlPullParser.START_TAG) { soapResponse= xpp.getName().toString(); String current = map.get(soapResponse); if (current != null && xpp.getText()!=null) { map.put( soapResponse, current += xpp.getText()); } eventType = xpp.next(); }
没有“如果……那么……否则”。甚至没有为策略模式等增加多个类的复杂性。地图是您的朋友。在某些情况下,策略固然很好,但这一策略非常简单,无需解决。