码迷,mamicode.com
首页 > 其他好文 > 详细

第4周作业:WordCount优化

时间:2018-04-09 00:15:32      阅读:148      评论:0      收藏:0      [点我收藏+]

标签:模拟   main函数   一点   格式   编码   用例设计   文件中   获取文件   []   

Github地址:

https://github.com/SkateCloud/wcPro

1:分析整理需求,完成PSP表格

PSP2.1 PSP阶段 预估耗时(分钟) 实际耗时(分钟)
>Planning 计划 5 6
Estimate 估计任务耗时 5 6
>Development 开发 40 50
Analysis 需求分析(包括学习新技术) 5 5
Design 具体设计 5 5
Coding 具体编码 10 20
Test 测试(自我测试,修改代码,提交修改) 20 20
> Reporting 报告 35 40
Test Report 测试报告 20 25
Size Measurement 计算工作量 10 5
Postmortem & Process Improvement Plan 事后总结,并提出过程改进计划 5 10
合计 80 96

2:代码设计思路

负责输入模块。
该模块主要可以分为两部分,一部分为对main函数中args参数的判断处理,另一部分为读取文件中的内容。
对于第一部分,大致思路是三条路:为空,输入正确,输入错误。
       在输入错误中应当细分几个分支,比如是输入文件格式后缀错误还是输入内容不是一个文件名。
       输入正确还要判断文件是否存在。
对于第二部分,运用java.nio.file中的File和Path包,通过readAllBytes()方法来获取文件内容,然后转码为UTF-8格式,否则会乱码。



以下为所有源代码:(可以跳过,后面有具体一点的说明)


import  java.io.*;
import java.nio.file.*;
public class Main {

private static String readFile(String path) {
    try {
        byte[] encoded = Files.readAllBytes(Paths.get(path));
        return new String(encoded, "UTF-8");
    } catch (IOException ex) {
        throw new RuntimeException(ex);
    }
}

public static void main(String args[]) {
    String filename = " ";
    if (args.length == 0){
        System.out.print("输入为空!请输入文件名!");
    }
    else if (args.length >= 1) {
        filename = args[args.length - 1];
        if(filename.contains(".txt")){
            if (filename == ".txt"){
                System.out.print(filename+"\n");
                System.out.print("请输入具体文件名,例如a.txt");
            }
            else{
                char c[] = filename.toCharArray();
                char t1 = c[filename.length() - 1];
                char x  = c[filename.length() - 2];
                char t2 = c[filename.length() - 3];
                char dian = c[filename.length() - 4];
                if(t1 == ‘t‘& x ==‘x‘ & t2 ==‘t‘ & dian ==‘.‘ ){
                    File file = new File(filename);
                    if(file.exists()){
                        System.out.print(filename+"\n");
                        System.out.print("输入正确!");
                        readFile(filename);
                    }
                    else{
                        System.out.print(filename+"\n");
                        System.out.print("文件不存在");
                    }
                }
                else{
                    System.out.print(filename+"\n");
                    System.out.print("文件格式输入错误!");
                }
            }
        }
        else{
            System.out.print(filename+"\n");
            System.out.print("输入文件格式错误。应为 .txt 文件");
        }
    }
}

技术分享图片

分支1:当用户输入为空时

技术分享图片
分支2:当用户输入不为空时:
分支2-1:输入文件名包含 .txt 时 技术分享图片
分支2-1-1:只输入.txt
技术分享图片

分支2-1-2:.txt 在输入末尾时 

技术分享图片

分支2-1-2-1:输入文件名存在 

技术分享图片

分支2-1-2-2:输入文件名不存在 

技术分享图片

分支2-1-3:.txt 不在输入末尾时 

技术分享图片

分支2-2:输入文件名不包含 .txt 时 

技术分享图片

3:测试设计过程

 具体测试用例设计见下表:
  

技术分享图片
技术分享图片

 测试应当尽可能覆盖所有分支,对于重要级别高的待测模块应多设置几个测试用例来模拟模块运行时的各种情况,确保模块运行的稳定性。
 在上述表格中,有些测试用例其实不是必需,实际运行几乎不会存在这种状况,比如最后一个用例。

4:测试运行和评价

 测试结果运行良好,模块质量也基本较高,但是有些分支其实会影响效率,在优化时可以去掉。
 
 测试用例1、2、3:

技术分享图片

技术分享图片

技术分享图片

技术分享图片

技术分享图片

 测试用例4:

技术分享图片

技术分享图片
测试用例5:
技术分享图片
测试用例6:
技术分享图片
测试用例7:
技术分享图片
测试用例8:
技术分享图片
测试用例9:
技术分享图片
测试用例10:
技术分享图片

 测试用例11:

技术分享图片

 测试用例12:

技术分享图片

 测试用例13:

技术分享图片

 测试用例14:

技术分享图片

 测试用例15:

技术分享图片

 测试用例16:

技术分享图片

 测试用例17/18/19:

技术分享图片

 测试用例20:

技术分享图片

5:小组贡献率: 0.3

第4周作业:WordCount优化

标签:模拟   main函数   一点   格式   编码   用例设计   文件中   获取文件   []   

原文地址:https://www.cnblogs.com/Nianx328/p/8742767.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!