Individual Project
第一次作业是一个Individual Project。我自己打算用C#来完成这个作业,但是以前没有用过C#,所以先打算简单地了解一下C#,然后进行开发。
初步计划:用两天时间了解一下C#的基本语法。
开始写之前:在弄清楚了这个题目的需求之后,我认为这个题目主要要做这几个方面的工作。(大括号中为我计划的时间)
1、{半个小时}要能够读取一个目录下面的所有文件以及文件夹,这一点涉及到系统的API的调用,将获得的文件名全部存储在一个ArrayList中,方便以后调用。
2、{2个小时}能够读取每个文件,并且按照规则将确定的一行字符串划分到一个字符串数组中,将所有的字符串统计放到一个Dictionary中,在Dictionary中能够看到每个词的词频。
3、{2个小时}将Dictionary中的内容能够按照一定的顺序排列输出。(这里完成了普通的要求)
4、{2个小时}再次对Dictionary中的内容进行处理,能够满足extend mode。
写好了之后:在写的过程中,发现了自己太多的问题,首先是对语言的不熟练,很多时候就是一边写程序,一边在网上搜索具体的语法知识,其次就是还没有清晰地设计出算法之前,就开始 写程序,然后写程序的过程中就一边在写,一边在想,脑袋中没有具体的思路。所以总是断断续续的。浪费了很多的时间。
每个部分大概花的时间如下:
1、{半个小时}这个部分就是函数的调用,只要找到了函数之后,很简单。
2、{2个半小时}这一段主要的问题还是在于划分上面,划分的时候最开始想要能够调用系统的split函数,结果,弄了很久,都没有弄出好的结果,最后自己重新写了一个划分的函数。
3、{4个小时}做得过程中主要一直想要对Dictionary进行排序,但是Dictionary内部的实现又是一个Hash的算法,不能够实现要求的排序的规则。后来选择了一个SortedDictionary,然后再加上一个排序,是具有相同频率的词语能够按照字典序排列。
4、{3个小时}这个部分主要的问题就是对于具有extend的特征的word的合并,感觉不太好弄。最开始想要借用SortedDictionary的特性,对划分的词组进行合并,但是考虑不周,后来发现存在问题。就采用了一个ArrayList来完成排序的工作。
Next:测试,修改BUG,完善程序中考虑不足地方。