zoukankan      html  css  js  c++  java
  • individual program总结

      这是软工的第一次作业,就让我感觉压力颇大,以前的作业都是紧跟书本布置,这个作业要根据需求自己运用知识、查资料来完成,感觉更倾向应用。

      我计划完成这个项目的时间总共是,8个小时,将工程分为入口类(包括程序入口,主要执行流程)和词频表生成器类(传递文件目录名,生成词频表)。入口类我打算用2个小时,写主要框架,和输出函数的排序功能;词频生成器类用3个小时,主要写文件递归和分词;剩下3小时用来调试。

      然而,事实是,我一共花了14个小时。

      因为我一直在陆陆续续的改,框架也是一点点完善,利用参数传递判断,把函数调用次数降低,而输出排序的函数中我也将自己写的排序算法改为网上学到的更面向对象的排序方法,分别通过value和key的两次排序,实现了先按频率后按字典序的排序功能,算法封装在IComparer接口中,这些改进和学习使我花了5个小时在入口类上。

      而词频表生成器类,我花了5个小时。主要是学习文件夹和文件如何递归遍历,并实现了递归算法,思考用什么结构存储词频表以及怎么处理extended模式也花了很长时间。本来我是用arrylist,但考虑到后面的排序更简洁,更有面向对象的特点,我就选择了dictionary结构;处理extended模式,我利用分隔符判断末尾数字,并截断。

      调试我花了4个小时,因为之前用了很多我并不熟悉的知识,一点点改进很费时间。

      这是我的性能分析图

      最耗时间的部分是排序输出部分,非独占百分比33.33.因为进行了两次排序,每次排序都是快排。

      这次作业我收获很大,主要是在面向对象写工程方面。我尽量用面向对象的思维去构建这个项目,并用封装的方法来完成各个功能。虽然很多细节都颇费一番周折才处理好,但不失为一次很好的尝试,让我见识了c#作为面向对象语言的强大功能。同时我也学习了很多有用的类,比如dictionary,directory,IComparer等。我想,努力用工程的思维去完成作业对我的能力是非常好的培养。

  • 相关阅读:
    第三发
    第二发
    第一发
    要看的算法
    haxe坑
    TCP/IP协议三次握手与四次握手流程解析(转)
    Android动态类生成预加载-dexmaker使用
    Java中ArrayList 、LinkList区别
    Java解析YAML和Android解析YAML
    Java sax、dom、pull解析xml
  • 原文地址:https://www.cnblogs.com/linlu1142/p/2700361.html
Copyright © 2011-2022 走看看