github地址:https://github.com/Duuang/Project-Sudoku
日期:2018-12-16
代码规范
编码之前,代码规范:Google C++ 代码规范(有个pdf文件,一搜就有),尽量按照里面的代码规范来
4. 实现阶段
(ConsolePatameter类的函数流程图:)
ExtractCommand()函数流程图
ExtractOperationCode()函数流程图
ConsolePatameter类的编码
因为最初的设计不太合理,也没有考虑到编码上的细节,所以在编码过程中,根据遇到的几个问题,我又修改了类的具体定义。
1. 编码过程中遇到了几个问题:
1. 没有默认构造函数,导致别的类如果包含这个对象,还要写初始化列表。。(即使加个空的默认构造函数,那如果是用默认构造函数新建的对象,也没有函数能初始化成员变量)
2. 因为存在错误输入的问题,用户获取命令参数时,没法方便的判断到底是不是合法的参数。
3. string operationcode无法同时方便的表示-c或-s后面的参数
4. public中的函数只是作为接口函数即可,不应该把不会被用户调用的函数放在public
解决方法
1. 去掉了带参数的构造函数,只使用默认构造函数,然后加了个void Init(int argc, char *argv[])函数来做相关初始化
2. 加了一个bool islegal成员变量,初始化为false,当参数合法时才被改为true,方便获取参数时来判断参数是不是合法
3. 把-c/-s后面的参数分为了int operationcode_c和string operationcode_s,分别存储,在获取的时候也分别获取(因为知道了command参数,所以也知道了应该获取_c还是_s)
4. public中的函数改为重新定义的接口函数
void Init(int argc, char *argv[]);
char GetCommand();
int GetOperationcode_c();
string GetOperationcode_s();
private中的函数改为被其他函数调用的函数
int ExtractCommand();
int ExtractOperationCode();
2. 类的设计上的修改为:
3. 代码分析(使用pdf中的Code Quality Analysis代码质量分析工具)
运行代码分析之后提示
源代码为 char s_tmp[1005];
没有初始化,改为了 char s_tmp[1005] = ""; 之后,消除了所有warning
至此ConsoleParameter类的编码阶段结束