个人项目(JAVA)

一、GitHub项目地址

https://github.com/Yuzeduan/WC

二、PSP表格

PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)
· Planning · 计划 50 55
· Estimate · 估计这个任务需要多少时间 30 30
· Development · 开发 960 784
· Analysis · 需求分析  50 60
· Design Spec · 生成设计文档 30 43
· Design Review · 设计复审  20 20
· Coding Standard · 代码规范 20 20
· Design · 具体设计 150 50
· Coding · 具体编码 400 300
· Code Review · 代码复审 60 50
· Test · 测试(自我测试,修改代码,提交修改) 180 180
· Reporting · 报告 120 120
· Test Report · 测试报告 60 60
· Size Measurement · 计算工作量 20 20
· Postmortem & Process Improvement Plan · 事后总结, 并提出过程改进计划 30 40
合计   2010 2159

三、解题思路

  • 理解基础功能,基础功能是计算文件的行数,字符数等,因此,这些基本功能应该是封装成工具类进行调用,然后外界只需要确定查询的文件,读入便可进行计算。
  • 理解进阶功能,进阶功能无非就是修改了参数,因此,我们只需要在第一步的基础上,在判断的条件中增加两个参数,便可以做到递归查询文件还有代码计算的输出,此处递归查询文件,可以复用基础功能的逻辑,所以可以将基础功能抽成单独的方法进行调用。
  • 理解高级功能,高级功能是进行界面展示,而之前的功能是进行命令行展示,于是我们可以理解成是一种问题的两种方案,所以,需要在中间加入一层逻辑判断,判断参数,构建出不同的解决方案,而外界只需要进行传入参数调用即可,不需要理会具体的实现,此处应该设计成,方案类继承统一的父类抽象类,在以后扩展解决方案的时候,只需修改中间逻辑层的少部分代码即可实现。
  • 程序还应该对一些不合理的输入进行提示,输入有误。

四、设计实现过程

  1. MAIN类:程序的入口处,只是简单的调用逻辑层的方法,传入参数即可,接下来的工具交给逻辑层进行处理。
  2. service层:抽象出一个通用的方案抽象类,创建两个实例类继承它,一个是命令行操作,一个是界面操作。创建一个获取对应方案解决类的Manager管理类,MAIN类传入参数,其进行判断,使用什么方案,例如,命令行,那就返回命令行实例类,进行命令行调用解决。在对应的方案类中,判断不同参数,调用底层工具类的方法,获取对应的值
  3. 底层工具实现类:进行文件的读取,文件的行数,单词等的计算,这个工具跟项目业务无关,因此可以抽成util类。
  4. 如果是界面展示,则需要一个界面的类,此类由界面方案解决类进行创建,其调用工具类获取到信息之后,进行填充View类进行展示

五、程序结果

1. 基础功能

2. 进阶功能

支持文件通配符,进行文件夹的递归查询子文件

3. 高级功能

选择文件

 

4. 异常情况

5. 测试文件

 六、总结

编写这个个人项目,经历了一个开发的流程,从设计,预算,开发,测试的过程中,学习到了很多关于软件工程的思想,其实实现功能并不难,而将该模块设计好,将所有情况考虑完善才是难的。在开发的过程中,要提到的是,在使用命令行的时候,因为是在编译器直接运行,所以就选择了编译器集成的命令行传参,没有用命令行进行操作,相信这个影响不大。尽管实现的是一个小功能,但还是想把所有方面都想清楚,从设计,搭建框架入手,将小功能实现,遵循开闭原则,做到易扩展,程序有更好的健壮性。

猜你喜欢

转载自www.cnblogs.com/allenyuaaaa/p/11575535.html
今日推荐