读书人

用面向对象思想重构过程式代码

发布时间: 2013-10-22 16:16:51 作者: rapoo

用面向对象思维重构过程式代码

用面向对象思维重构过程式代码

一、背景

有一个自动化执行测试案例的程序,需要根据用户输入的参数决定大量案例中的哪些案例需要执行。程序代码如下(为便于理解,这里仅贴出与主题相关的代码):

//处理指定参数组的情况    [A,B,C]即指执行参数组(A,B,C)或者[A:C]即指执行参数组(A,B,C)private void _run(Config config, TestEngine te, TestNotifier fNotifier, TestCase tc ,String paramGroupName) throws Exception{boolean isScope = false;String[] paramGroupNames = null;if(paramGroupName != null && paramGroupName.trim().length() != 0){if(paramGroupName.indexOf(",") != -1){paramGroupNames = paramGroupName.split("[,]+");}else if(paramGroupName.indexOf(":") != -1){isScope = true;paramGroupNames = paramGroupName.split("[:]+");}else {paramGroupNames = new String[]{paramGroupName};}}boolean isRun = false;for (TestParamGroup tpg : tc.getParams()) {if(paramGroupNames == null){run(config, te, fNotifier, tc, tpg);//如果指定的具体生成那个参数组,则只执行该参数组对应的案例}else{//如果是定义的是范围 A:Cif(isScope){//如果已经超出范围,直接跳出循环if(isRun){run(config, te, fNotifier, tc, tpg);if(paramGroupNames[1].equals(tpg.getName())) break;}else if(paramGroupNames[0].equals(tpg.getName())){run(config, te, fNotifier, tc, tpg);isRun = true;}}else{for(String paramName : paramGroupNames)if(paramName.trim().equals(tpg.getName().trim())){run(config, te, fNotifier, tc, tpg);break;}}}}}

代码比较长,我简单解释一下:

读书人网 >行业软件

热点推荐