zoukankan      html  css  js  c++  java
  • 第一次个人项目【词频统计】——需求分析,代码规范,设计思路

    需求分析

    • 由于程序需要在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 *存储上次读过的字符串
  • 相关阅读:
    二.二分法总结
    20201214 Json与pickle数据序列化
    20201213-1 HTML基本标签(一)
    20201207-2 openpyxl 库与模块导入
    20201207-1 实例变量与类变量
    20201205-3 HTML环境搭建与文件基本结构
    20201205-2 HTML概念与版本
    20201204-3 opp编程好处与构造函数
    20201204-2 面向对象特性介绍
    20201204-1 面向对象介绍
  • 原文地址:https://www.cnblogs.com/ustctp/p/8672045.html
Copyright © 2011-2022 走看看