养成编码好习惯

参考百度文库:

1.代码排版凌乱.缩进不齐。 

2.错误修改后只测试局部,没有系统测试  
3.异常不抛出或不处理。 
4.增加了新的系统参数,在参数初始化函数里却不进行赋初值,有时造成加工异常,被客户反馈回来求解决。
5.新项目号忘记在程序里更改项目号,更改参数、加工文件版本。避免客户出问题时找不到对应的程序或者负责人,或者新项目调用别的项目的参数文件导致不必要的问题。
6.及时上传程序或做好备份,避免给接手项目的人造成麻烦。
7.编写代码前应该先写文档
8.程序整体结构的思路不清晰,局部模块结构复杂
9.定义函数头还是定义变量都不应该出现汉语拼音,应以英文为准;定义结构体不遵循自然对齐方式排列;
10.函数里头局部变量定义不遵循统一类型统一放置,如布尔型放在一起,整形放在一起,完全按照自己想到哪写到哪,写完不够再添加;
11.做除法运算时,总忘记除数要是为0的情况
12.易变的变量,不进行说明,特别是关键变量,容易被编译器进行优化处理,使得使用过程中不能正确传值。 这样的错误往往难易发现,给调试程序带来极大痛苦。
13.缺少清晰的编程思路,从局部而非项目整体入手,导致捡了芝麻丢了西瓜,后续缝缝补补的情况发生。
14.变量类型不对(整型和浮点型不分、字节数不够、有无符号)
15.引用数组元素超界,数组大小不够,数组类型不对,大的数组的大小直接用数字而不是用宏定义
16.除了必须等待外,在while(1)中嵌入while(1)
导致问题:实时性差,容易死机
17.switch中再次嵌入switch
导致问题:逻辑混乱易出错
18.容易由复制而导致的问题,例如  
SetStartv(1,startv[0]);
SetSpeed(1,speed[0]);
SetAcc(1,acc[1]);
当复制到其他轴上去时需要修改6个地方,很容易出错,完全可以改写为:
axes=0;
SetStartv(axes+1,startv[axes]);
SetSpeed(axes+1,speed[axes]);
SetAcc(axes+1,acc[axes]);
这样的话复制的时候只要修改axes的值就好了,或者干脆把这三条语句定义为一个带参数的宏
#define SET_SPEED(axes) {\
SetStartv((axes)+1,startv[axes]);\
SetSpeed((axes)+1,speed[axes]);\
SetAcc((axes)+1,acc[axes]);}

19.修改代码之前不进行备份
20.代码换行无规律,有时候一行代码很长;
21.不需要修改的变量不用const来保护
22.很少使用标准库函数和公共函数,需要什么功能都是随手写一个。
23.switch语句中case常常会丢掉break;
24.经常在一个函数里实现好几个功能。
25.多余的调试信息输出没有注释掉
导致问题:影响程序执行效率甚至导致程序不能正常运行
解决办法:做成宏定义,使正式生成代码时直接被忽略掉
26.代码中有特殊意义的数值不用宏定义
导致问题:难于阅读或者修改时容易遗漏出错
解决办法:勤快点
27.大量重复的代码
导致问题:修改时容易遗漏、工作量大
解决办法:能做成函数的尽量做成函数,不能做成函数的做成宏定义
28.一大堆全局变量
导致问题:模块与模块之间耦合高,修改之时,牵一发而动全身。
解决办法:做成带参调用的函数
29.没有注释或注释很少
导致问题:可读性差,修改麻烦。
解决办法:勤快点
30.以为所有的变量上电之后的值就一定是0而不进行初始化就使用
导致问题:程序不稳定,运行结果不一致等。
解决办法:初始化后再调用
31.变量、函数命名不规范
导致问题:语言不通,难于阅读。
解决办法:熟读编程规范
32.大量开辟内存而没有考虑内存共用或循环队列等节约内存的方法
导致问题:内存很容易被耗光。
解决办法:内部的模块尽量用指针,最外层的模块才用数组。
33.函数的可重用性不高,未最大化的发挥其利用价值。
导致问题:多个类似的函数却不通用。
解决办法:规划好传递的接口参数,使函数更具包容性。
34.牺牲可读性换取少敲几个代码
导致问题:维护麻烦
解决办法:勤快点
35.不经同意对别人的代码进行风格改造而未有任何实质性的改动
导致问题:进行版本比对时有大量修改的内容而找不到真正修改的地方。
解决办法:不对别人已经调试ok的代码进行改动
36.不经同意修改公共模块,例如库中提供的头文件
导致问题:与别人的模块无法进行快速衔接,不通用。
解决办法:不对别人提供的库或模块进行修改
37.项目中的文件包含关系不清晰,错综复杂,包含一些不相关的头文件。
导致问题:修改时麻烦,牵一发而动全身
解决办法:尽量将所有未用到的头文件去掉,或则使用条件编译,根据条件选择是否包含某个头文件
38.在一个任务中使用大量的延时函数。
导致问题:不同响应频率的任务不能在这个任务中一起执行。
解决办法:一个任务中只用一个最小的延时函数作为基准时间,其他的延时时间均为此延时时间的整数倍,这样可使多种执行频率的任务在同一个任务中同时执行。
39.程序修改后无修改记录。
导致问题:维护麻烦
解决办法:勤快点
40.使用i,j,k这些常用的临时变量名称作为函数的参数名称。
导致问题:容易与循环变量搞混而导致错误。
解决办法:不轻易将i这个变量作为循环变量以外用途
  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值