wc.exe plus版本(增加扩展功能以及修正低版本的bug)

 

合作者学号:201631062213,201631062205

gitee网址:https://gitee.com/xiecangxing/wc/tree/ce1fe8f0c99de1957472a75a7d129123592d1f15

摘要

本项目扩充了扩展功能,即多批量处理目录以及子目录下所有的符合条件的文件,输出他们的代码行/空行/注释行信息,以及单词的剔除

并且直接使用C#语言进行编写

增加部分关键方法,删除部分不必要的方法

解题思路:

因为上一个版本已经对基础功能进行了实现,所以本次只是在原有的基础上进行增加功能,并非很复杂,然后重新了部分之前的方法,解决一些小的bug,增加了参数保护,防止程序意外崩溃

具体执行:

本次增加的方法为以下几个:

 FindAllFiles(string path,string searchstr)            //遍历目录和子目录下所有符合条件的待处理文件

public void EmptyLine(string filePath)      //文件中的空行数

public void CodeLine(string filePath)          //文件中的代码行数

public void NoteLine(string filePath)                   //文件中的注释行数

public void ExceptWords(string filepath)   //提取禁止搜索的单词

其中代码行是通过,总行数-空行数-注释行数+注释行与代码同行数得到的

并且新建单元测试,如下:

运行情况:

未运行时的目录结构,已添加测试必要的文件

新建文件夹下还辖有文件,代码文件内容相同,但是名字不同:

 

 

然后进入dos界面,输入以下命令行wc.exe -s -a -w -c -l *.cs -o output.txt -e stopList.txt

 

命令行语义为,遍历同目录以及子目录下所有的.cs文件,统计代码行/空行/注释行,单词数,字符数,总行数,并且剔除stoplist。txt中的单词

stopList.txt中提出单词为:

代码文件中内容为:

 执行后文件目录为:

 

 

指定的输出文件内容如下:

功能实现完整。

代码互审以及模块分工:

我主要负责了代码主要功能的实现,即,代码行,注释行,空行的功能实现,以及单元测试,对方则负责了遍历所有的符合条件的文件功能,还有剔除单词提取功能

在编程过程中,我们遇到了以下几个主要问题

1.代码行与注释行在同一行的问题

  在编程中我发现有些编程者喜欢将注释直接写在代码行的后面,所以我们单方面认为这既属于代码行又属于注释行,对方剔除在增加一个re变量来储存代码行与注释行同在一行的情况,然后再是最后计算时,再为代码行加上这个重复的福分的数量,问题得到很好的解决

2.剔除单词提取功能

  对方再编程过程中,对于文件中的单词提取出现了问题,不知道如何将单词准确提取出来放在字符串数组中,以备查询单词数时进行筛选,我为其介绍了string.Concat拼接方法,然后建议其用集合来储存,最后得到很好的解决

感想:

此次扩展功能实现给了我们一种很好的结对编程的体验,两个人不论是对代码逻辑提出了很多异议,最终敲定了最终的方案,还是两个人对对方代码提出的建议,都是对两个人的编程能力和思维很重要的,两个人的结对编程同一个人的编程感觉是完全不同的,一个人的编程是独立的,自己的思路可以直接左右整个程序的流程,这样的弊端在于一个人的思想局限,可能会导致资源的浪费,以及代码的冗杂,还有命名规范问题,但是两个人的编程,可以吸取对方的编程思维,可以扩展自己的局限,还有就是代码的纠错率以及代码的重构,对彼此的益处都是很好的

 

posted @ 2018-10-17 21:19  谢沧行  阅读(946)  评论(0编辑  收藏  举报