第一次个人项目【词频统计】——需求分析,代码规范,设计思路

需求分析

  • 由于程序需要在Windows平台和Linux平台都能运行,因此对代码的可移植性有一定的要求
  • 由于需要对文件夹进行遍历,因此数据量相对较大,需要选择合适的数据结构,在此项目中,树和哈希表都是可供选择的数据结构
  • 由于对字符串的处理很多,因此需要选择一种合适的字符串表达方式,char* or string?

代码规范

  核心要求:用代码做到“卒章显志”的作用,代码能说清楚的事情就不要用注释,注释仅提示思路或者注意事项。因此变量名和函数名的设置尤为关键,比如函数名isSamePhrase(),又比如变量名bool isStringStart.

  以下根据常用的C/C++编码规范列举了如下要求:

  【通用】

  • 系统头文件应用:#include <xxx.h>
  • 自定义同文件应用:#include "xxx.h"
  • 函数体类体之间原则上用2个空行,特殊情况下可用一个或者不需要空行。

  【注释】

  • 调试的代码,加上注释 // only for DEBUG
  • 需要引起关注的代码,加上注释 // NOTE ...
  • 对于较大的代码块结尾,如for,while,do等,可加上 // end for|while|do

  【命名规范】

  • 同一性:在编写一个子模块或派生类的时候,要遵循其基类或整体模块的命名风格,保持命名风格在整个模块中的同一性。
  • 标识符组成:标识符采用英文单词或其组合,应当直观且可以拼读,可望文知意,用词应当准确,避免用拼音命名。
  • 最小化长度 && 最大化信息量原则:在保持一个标识符意思明确的同时,应当尽量缩短其长度。
  • 避免过于相似:不要出现仅靠大小写区分的相似的标识符,例如"i""I""function""Function"等等。
  • 避免在不同级别的作用域中重名:程序中不要出现名字完全相同的局部变量和全局变量,尽管两者的作用域不同而不会发生语法错误,但容易使人误解。
  • 正确命名具有互斥意义的标识符:用正确的反义词组命名具有互斥意义的标识符,如:"nMinValue""nMaxValue""GetName()""SetName()" ….
  • 避免名字中出现数字编号:尽量避免名字中出现数字编号,如Value1,Value2等,除非逻辑上的确需要编号。这是为了防止程序员偷懒,不肯为命名动脑筋而导致产生无意义的名字(因为用数字编号最省事)。

  【代码风格】

  • 每一行开始处的缩进只能用Tab
  • 在代码行的结尾部分不能出现多余的空格
  • 除了特别情况,函数体内不能出现两个空行
  • "if"、"for"、"while"、"do"、"try"、"catch" 等语句自占一行,执行语句不得紧跟其后。不论执行语句有多少都要加 "{ }" 。这样可以防止书写和修改代码时出现失误
  • if语句如果有else语句,用 } else { 编写为一行,不推荐用 3 行代码的方式。
  • 多行变量定义,为了追求代码排版美观,可将变量竖向对齐。
  • 对于switch语句,若某个case不需要break一定要加注释声明。

设计思路(概述)

  • 遍历给定的文件夹,并将文件的绝对路径存在vector中
  • 遍历vector,逐文件统计信息
  • 为了提高效率,采用边读文件变统计信息的方式
  • 由于单词量很大,因此采用平衡二叉树作为数据组织结构
  • 由于对单词进行重定义,所以不能直接使用fgets或者fscanf读字符串,而应该逐字符扫描判断是否为单词。
  • 由于需要统计词组,因此可以用一个char *存储上次读过的字符串

原文地址:https://www.cnblogs.com/ustctp/p/8672045.html

时间: 2024-11-08 07:30:55

第一次个人项目【词频统计】——需求分析,代码规范,设计思路的相关文章

结对项目 - 词频统计

目的与要求 代码复审练习 结对练习 编写单元测试 基于作业3的结果,读取一个较小的文本文件A_Tale_of_Two_Cities.txt,统计该文件中的单词的频率,并将统计结果输出到当前目录下的 Result1.txt 文件. (第一阶段初稿完成该要求) 命令行格式: 提示符> Myapp.exe -f filename.txt > Result.txt (PS:C++ 程序,Java 程序输出方式类似) filename.txt 为前面下载的文件名. 解释: 选项 -f 表示后面跟文件名

结对项目 - 词频统计Ⅱ

目的与要求 代码复审练习 结对练习 编写单元测试 基于上一个结对项目的结果,读取小文本文件A_Tale_of_Two_Cities.txt 或者 大文本文件Gone_with_the_wind.txt,统计某一指定单词在该文本文件中出现的频率. 命令行格式: 提示符> Myapp.exe -f filename.txt -w word (PS:C++ 程序,Java 程序输出方式类似) 解释: 选项 -f 表示打开某一文件 选项 -w 表示统计其后单词在打开的文件中的频率 详细内容 开发语言:J

unity3D 游戏开发之工程代码框架设计思路MVC

unity3D 游戏开发之工程代码框架设计思路MVC 设计目的 1.使工程结构更规范. 2.提高代码可读性,封装性,拓展性 3.提高工作效率. 正文内容: 1.Frame的组成结 (1)视图层(View) (2) 控制层(Control) (3)数据层(Model) 整个Frame是由这三个部分组成,每一层管理属于自己的逻辑,核心思想是游戏逻辑和UI 逻辑独立开.目前遇到的项目工程大多数View和Control逻辑都写在一起,这样后期修改 和维护效率会很低,因为耦合性很高而View又是经常要修改

个人项目——词频统计

前言: 开发工具:Visual Studio 2013 开发语言:C++ 源代码管理工具:Github Github源代码网址:https://github.com/superyy/YY1/blob/master/%E8%AF%8D%E9%A2%91%E7%BB%9F%E8%AE%A1main.cpp 预计各功能所花时间:some hours 实际各功能所花时间:some hours 性能提高所花时间:some hours 要求 :实现一个控制台程序,给定一段英文字符串,统计其中各个英文单词(4

个人项目----词频统计WEB(部分功能)

需求分析 1.使用web上传txt文件,对上传的txt进行词频统计. 2.将统计后的结果输出到web页面,力求界面优美. 3.在界面上展示所给url的文章词频统计,力求界面优美. 3.将每个单词同四.六级词库进行比对,统计所传txt文件中四.六级单词涵盖率. 4.在3的基础上,展示文章中前10%单词中的覆盖百分比,词频前50%单词.词频前80%单词的覆盖百分比. 由于能力有限,学习了很久,到目前为止之完成了第一个功能,并对结果进行了输出,界面部分还有待学习. 代码实现 创建了两个JSP界面,up

关于项目模块间交互的一个设计思路

1.背景 某API项目,项目天然地按业务分为了不同的包,那么每个包都独立处理自己的业务逻辑,独立接管数据源,独立地向外部提供数据,彼此基本互不通信. 不过,随着需求的增多和业务的堆积,项目的复杂度越来越大,但是每个独立模块却又不足以独立出去成为一个单独的项目,而模块间又因业务需要开始发生交互的时候,问题来了. 2.问题描述 由于模块间的数据交互,按照Spring的套路,是可以直接把容器接管的对象注入到你需要的地方去的,那么一旦你开始问其他模块要数据,开始要命了.如上图,如果模块3问模块2和模块4

第一次软工作业 个人项目 词频统计

1.预计完成时间: 在一开始的时候,我并不认为这项作业的完成难度有多大.因为觉得这个程序主要的部分就是三块码,读入当前目录下的所有内容,统计单词和排序,但是我对于C++和C#两种语言都不熟悉,所以准备先用两天来熟悉语言(后来发现这个决定是错误的..至少 不应该用这么长的时间).在程序的具体模块中,我划分了四个模块: 主函数:处理整个流程,包括读入目录中的所有内容和对于所执行模式的判断,预计用时1小时. 分割函数:将文件中的单词分割出来.由于有三种模式,预计用时3小时. 计数函数:统计频率,作为统

个人项目 - 词频统计

目标与要求 使用开发工具 使用源代码管理工具 详细要求: 1. 实现一个控制台程序,给定一段英文字符串,统计其中各个英文单词(4字符以上含4字符)的出现频率. 附加要求:读入一段文本文件,统计该文本文件中单词的频率. 2. 性能分析: +对C++代码运行VS的性能分析工具,找出性能问题并进行优化. +对Java程序运行性能分析工具 NetBeans IDE 6.0,找出性能问题并进行优化. 详细内容 开发语言:C++ 开发工具:Codeblocks 准备工作: 思路 (1)由用户选择是自主输入一

结对项目— 词频统计2(语言C++)

结对对象:季天梦 博客地址:http://www.cnblogs.com/jitianmeng/ github链接:https://github.com/liuyutianlyt/EX_4.md 比例:1:1   要求 [必做 2] 读取小文本文件A_Tale_of_Two_Cities.txt 或者 大文本文件Gone_with_the_wind.txt,统计某一指定单词在该文本文件中出现的频率. 命令行格式: 提示符> Myapp.exe -f filename.txt -w word (P

作业4:结对项目——词频统计

1. 目标 代码复审练习 结对练习 编写单元测试 2. 要求 [必做 2] 读取小文本文件A_Tale_of_Two_Cities.txt 或者 大文本文件Gone_with_the_wind.txt,统计某一指定单词在该文本文件中出现的频率. 命令行格式: 提示符> Myapp.exe -f filename.txt -w word (PS:C++ 程序,Java 程序输出方式类似) 解释: 选项 -f 表示打开某一文件(filename.txt) 选项 -w 表示统计其后单词(word)在打