个人项目总结 By Xiao Li
个人项目总结
本次个人项目的内容是写一个统计英文词频的程序。这也是我第一次使用C#开发一个相对完整的程序,还是学到了不少东西,在这里总结一下吧。
首先给出我的项目预估时间和实际时间的对比:
Work Items |
Time estimation |
Time Actual |
Size estimation |
Size Actual |
Due Date |
Finish Date |
Algorithm design |
1 day |
0.5 day |
N/A |
N/A |
16-Aug |
17-Aug |
I/O Module |
2 hours |
1.5 hours |
30 lines |
15 lines |
17-Aug |
18-Aug |
Kernel algorithm |
0.5 day |
3 day |
50 lines |
150 lines |
21-Aug |
23-Aug |
Code Review |
3 hours |
3 hours |
N/A |
N/A |
23-Aug |
23-Aug |
Testing and Debugging |
0.5 day |
1 day |
N/A |
N/A |
24-Aug |
24-Aug |
可以看出,表面上虽然时间还是控制的比较好,但是对于核心算法的时间和代码量估计都远远不足;多出的时间实际是用加班来弥补的。因此我认为预估代码量以及时间的时候都不能过于乐观。
再说实现过程,虽然从最后结果来看,我的程序是所有C#实现的词频程序里最快的,但这中间也经历了几次大的改动。最开始我自己写了Trie树进行排序,但速度不能令人满意。与其他同学交流了一下以后,决定改用C#自带的Hashtable,速度得到了明显的改善。之后在检查代码的时候,意识到了自己之前写的Trie树不够完善,可以有很大的改善空间,于是就又将核心算法转回了Trie树,并取得了较好的效果。事实上,如果在动手写代码之前能够更好的规划自己的算法和数据结构,无疑会节省掉中间不停更改实现算法的时间,这也是我需要注意的问题。
总之,通过这一次个人项目的实践,我不仅练习了用C#开发项目的基本流程,并且对于如何设计和规划自己的项目有了更加深刻的认识。