看别人的代码, 我觉得是一个痛苦又会有所收获的过程, 很多和自己的逻辑不相符的算法思路都是皱着眉头硬看下去, 但有的完全理解后, 转念一想好像又确实没啥毛病, 甚至还比自己的思路巧妙了那么一些, 拓展了自己下一次在面对同样问题时的解决思路
队友和我自己一样, 也是用了 c++(虽然和 java 一样都半斤八两, 但毕竟是大一就学的语言总有点亲切的味道?)
先说优点, 首先是注释很清楚, 清晰的注释无疑让我的阅读体验上升了不少, 可以明了地看出算法的思路 (缓缓放下了手中的刀.......)
- int Primary(int number,string file_Name) // 生成小学试卷的函数 ,number 为生成题目数量, file_Name 为储存. txt 文件目录
- {
- int num_Bracket=0; // 括号数目
- int bra_left; // 左括号
- int bra_right; // 右括号
- int flag;
- int sum=0;
- srand(std::time(NULL)); // 随机种子
- ofstream file;
- file.open(file_Name.data()); // 打开需要储存的. txt 文件
- for(int i=0;i<number;i++) // 循环生成题目
- {
- file<<i+1<<"."; // 题目编号
- int num=rand()%4+1; // 随机操作数
- for(int j=0;j<=num;j++)
- {
- bra_left=rand()%3+1; // 随机数, 判断是否生成左括号
- flag=rand()%4; // 随机符号
- if(bra_left!=1) // 不产生左括号
- {
- if(num_Bracket!=0) // 前面的算式存在左括号
- {
- int bar_right=rand()%2+1; // 随机右括号 , 概率为 1/2
- if(bar_right==1) // 生成右括号情况
- {
- file<<rand()%100+1<<")"<<sym_Pri[flag];
- num_Bracket--; // 括号数目减一
- }
- else
- file<<rand()%100+1<<sym_Pri[flag]; // 不生成右括号
- }
- else
- file<<rand()%100+1<<sym_Pri[flag]; // 没有左括号不生成右括号
- }
- else if(j==0)
- {
- file<<rand()%100+1<<sym_Pri[flag];
- }
- else
- {
- file<<"("<<rand()%100+1<<sym_Pri[flag]; // 生成左括号, 括号数目加一
- num_Bracket++;
- }
- }
- file<<rand()%100+1; // 保证至少存在两个操作数
- if(num_Bracket!=0) // 是否都有对应的右括号
- {
- for(int i=0;i<num_Bracket;i++)
- {
- file<<")"; // 不对应则吧右括号全部加在最后
- }
- }
- num_Bracket=0;
- file<<"="<<endl;
- file<<endl; // 换行
- }
- file.close(); // 文件关闭
- }
其次是老师上课时提到的高内聚问题, 本次项目需求的小学, 初中, 高中出题算法都作为单独的方法放到了主函数外, 每个模块都做好了自己的事, main 函数中的调用就显得简单明了
再就是变量命名, 虽然有点单词不太恰当 (hhh), 但该大写的地方都大写了, 再加上注释也不会让人对变量或者函数的作用产生什么异议
然后就说到不好的地方
问题首先也出在上面粘出的代码上, 在生成小学题目的算法中, 为了不让一个括号直接包住了整个算式这样的情况发生, 队友用这样的语句
- else if(j==0)
- {
- file<<tri<<rand()%100+1<<sym_Pri[flag];
- }
即第一个操作数前一定不会有左括号, 强行阻止了这一情况的发生, 但这样的话, 就导致了如 (1+2)*3 这样的算式不会存在的缺陷
再然后的话, 就是回车打少了代码看着有点拥挤, 按照我自己的习惯的话, 我是习惯在一个功能模块写完之后多打一行回车, 以分隔一下代码, 感觉就像写作文时分自然段一样?
最后的话, 众所周知, 结对编程要写 ui 了, 然后! 我们! 都用的! c++!
也许这就是命吧
eclipse, 打开
我继续改代码了
溜了溜了
.
来源: http://www.bubuko.com/infodetail-2784078.html