系统分析与设计结对项目

合作者:201631062522,201631062626

代码地址:https://gitee.com/iy2524/WordCount2.0

结对伙伴链接地址:https://www.cnblogs.com/stedylan/p/9800361.html 

本次作业地址:https://edu.cnblogs.com/campus/xnsy/2018Systemanalysisanddesign/homework/2188 

1.结对的PSP表格:(在文章开头给出的结对伙伴链接中)

2.代码互审

审查的基础功能模块,其中遇到的问题是在getCharsNum()方法中,如果统计的文件中有中文字符,在结对伙伴的电脑中会将一个中文字符统计为两个,在我的电脑中是将一个中文字符当一个字符,同一个方法在不同设备中统计结果不同,分析并通过网络查询得知是由于eclipse编码方式不一样,他的是utf-8,而我的是GBK,通过指定编码方式解决了这个问题。

3.设计过程:(在文章开头给出的结对伙伴链接中)

4.代码说明:

Junit测试类中私有方法时,由于不可以访问到私有方法,需要使用反射。具体代码及其注释如下:

    @Test
    // 测试getStopStringList()方法
    public void testGetStopStringList() throws Exception {
        String stopFile = "res//stop.txt";
// 目标类对象调用getDeclaredMethod()方法可获得公共、保护、默认(包)访问和私有方法,但不包括继承的方法。
// 参数 分别是目标方法名字符串 和目标方法所需要的参数类型 连续写在后面 Method method
= WordCountUtil.class.getDeclaredMethod("getStopStringList", String.class);
// 值为true时 反射的对象在使用时 应让一切已有的访问权限取消 method.setAccessible(
true);
// 通过反射向目标方法传参并执行 返回Object对象 Object result
= method.invoke(WordCountUtil.class.newInstance(), stopFile); List<String> stopList = new ArrayList<>(); stopList.add("public"); stopList.add("static"); stopList.add("if"); Assert.assertEquals(stopList, result); }

未解决的问题:当私有方法需要的时集合参数时,似乎不能使用此方法,在网上查询也未解决,最后将那私有方法改为public方便测试,但为了测试而修改源程序显然是不正确的。希望老师能帮助解决。

5.总结

由于本次项目是先前做过的项目,在整合前,先互相审查代码,在两个人的代码中选择最佳的方法组成新的项目。互相查看原来代码的过程中,看到了不一样的解决方案,就比如对文件的读取,我是用一个字符一个字符读出来处理分析的,而我的结对伙伴是一行字符串一行字符串读出来处理分析的,所以说两个人的代码很不一样。所以不同人有不同的解决问题方式,多人解决总比一人更快更有效率。结对编程确实是好的编程方式。还有就是在代码互审中也收获很大,首先自己的错误很难自己找出来,互相审查代码,需要审查的代码量没变,审查的速度效率却提高了。互审过程中还可以看到其他人对代码的编程习惯,好的可以学习,不好的可以互相指出来改进。对于使用同种规范编码,开始的时候很不习惯,例如大括号的对齐方式,在阿里的规范中,大括号不是纵向对齐的,在本课程的书本中,构建之法65页中有说过让大括号独占一行,纵向对齐的方式更加清晰,我一直以来也是采用的此种对齐方式。不过最后还是妥协了使用阿里规范,毕竟要统一规范,不可太过固执于自己的习惯而影响团队的代码规范要求。

posted @ 2018-10-16 20:59  MorningStarY  阅读(134)  评论(0编辑  收藏  举报