第一次个人项目【词频统计】——需求分析,代码规范,设计思路
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了第一次个人项目【词频统计】——需求分析,代码规范,设计思路,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1529字,纯文字阅读大概需要3分钟。
内容图文
需求分析
- 由于程序需要在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
内容总结
以上是互联网集市为您收集整理的第一次个人项目【词频统计】——需求分析,代码规范,设计思路全部内容,希望文章能够帮你解决第一次个人项目【词频统计】——需求分析,代码规范,设计思路所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。