合作者学号: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拼接方法,然后建议其用集合来储存,最后得到很好的解决
感想:
此次扩展功能实现给了我们一种很好的结对编程的体验,两个人不论是对代码逻辑提出了很多异议,最终敲定了最终的方案,还是两个人对对方代码提出的建议,都是对两个人的编程能力和思维很重要的,两个人的结对编程同一个人的编程感觉是完全不同的,一个人的编程是独立的,自己的思路可以直接左右整个程序的流程,这样的弊端在于一个人的思想局限,可能会导致资源的浪费,以及代码的冗杂,还有命名规范问题,但是两个人的编程,可以吸取对方的编程思维,可以扩展自己的局限,还有就是代码的纠错率以及代码的重构,对彼此的益处都是很好的