整理笔记
下载了很多资料但总是没有时间看,于是想用博客的形式督促自己学习。内容来源于网络、老师所给材料以及自己的总结。
代码规范
问题编号 | 存在问题 | 解决方案 |
---|---|---|
1 | 在程序中直接使用数字,未定义为常量 | 利用const定义常量 |
2 | 变量名、函数名没有意义,或过短,或过于通用 | 做到见名知义 |
3 | 无缩进,缩进不当,排版混乱 | 使用正确的缩进 |
4 | 左大括号风格不一致,有些另起一行,有些放上一行行尾 | 保持一致的风格 |
5 | 函数返回引用时,返回了局部变量 | 绝不应该返回局部变量,必要时返回全局或静态变量 |
6 | 没有进行有效性检查 | 对输入数据均应该进行有效性检查 |
7 | 指针赋值为0 | C++98NULL C++11后 nullptr |
8 | 分支和循环体只有一条语句时不加大括号 | 无论有几条语句,都要加大括号 |
代码质量
- 编译问题:数组
//长度最好是常数/常量
//不能确定长度时改为动态内存
int *p = new int array[a];
-
代码编译通过,逻辑上存在问题/内存管理出问题
1.重点关注边界值的处理
2.数组越界/new和delete没有成对
//对未被初始化的指针进行delete
//对没有指向new出的内存的指针进行delete
//对一块已经delete过的内存再次delete
//new 对应 delete;new [] 对应 delete [] -
编译通过,逻辑正确,但是性能低下。
//大对象传递时不使用引用或指针
//无意义的多次内存复制 -
代码可理解性、可维护性差
//缩进统一
//变量名、函数名、类名命名要规范(驼峰式命名)
//注释的书写
//单句代码段外加{}(比如if,else分支/for,while循环)
//数字常数要设置为常量
//可以加const的地方尽量加上const(防御性编程) -
DRY–Don’t Repeat Yourself
//遏制自己ctrl-c ctrl-v的冲动!
//如果一段代码,可能被用在二处以上的地方,提取出来做成函数。
//如果一段代码太长,分解成多个函数,赋以有意义的函数名。
//多思考:这段代码能不能被复用。
//不断重构代码,提高代码质量。