整理了一下编程经验,以及项目检视代码中发现的常见问题。
特别注意的是:逻辑清晰,不要简单的问题复杂化,不要重复,没有问题不要制造问题去解决。
优秀的程序员就像一个老司机,不但自己要遵守规则,还要尽量处理别人不遵守规则的情况。
1、函数要功能单一
言行一致(接口调用会不会导致未定义问题)
不要超过50行
2、不要一次性写太多来不及测的代码,而是要写一段调试一段
一步一步来,先框架,后填鸭
3、UT和编码要同步做
UT(Unit Testing)用例要覆盖到每一行代码
注意考虑健壮性
好的程序员一定是好的测试
4、注释贵精不贵多
注释要必要,不要写无关紧要的注释
5、碰到一堆问题时,一次只尝试解决一个问题
慢就是快
6、不要过度依赖debug,学会从代码中找问题
大胆猜测,细心验证排除
7、设计模式是个好东西,但不要强行使用
生搬硬套,得不偿失
最重要的是解决问题
8、没造成可观的损失前不要尝试做性能优化
先实现功能,再重构代码
不要想一下子想全面了
9、没事别重复造轮子,移植别家轮子除外
这应该是每个程序员终其一生都与之奋斗的内容
这类问题有很多层面,语句层面、函数层面、模块层面
避免重复的首要目标是降低将来维护成本跟风险
10、复杂的问题简单化,不要搞反了
简单的代码才不容易隐藏bug
已经达到100%了,代码清晰的情况下不要再加层层保护(指针判断除外)
11、不要害怕接触新知识
因为害怕也没用,不管你愿意不愿意,你现在会的东西5年后就会过时
12、如果代价允许,一个功能能做到100%,就不要做到99%
剩余1%的维护成本不是我们能承受的
13、命名要精确,统一
不要起别名
14、不要将巧合当必然
例如赛季是可配的,当前配置是一个礼拜一个赛季
代码中不应该出现Week字眼, Week只是Season的一种特例
15、变量传递
int firstVar = 0
...
int secondVar = firstVar
// 在此之后,不允许再出现firstVar
16、条件判断
不要放大条件判断的范围,下面情况setLevel应该提出到判断之外
if (...){
setLevel(x);
int y = ...;
}
else{
setLevel(x);
int z = ...;
}
17、注意处理边界问题
前车突然变道,能否正确处理?
迎面轮胎飞来,能否正确规避?
侧方巨无霸并行,是否存在隐患?
。。。
18、防患于未然——安全性检查
断腿好医,牙疼难治。阻挠代码质量的往往是一些设计缺陷、安全隐患
平时没有感觉,发作起来往往已经病入膏肓,回天乏术了
19、培养自己对代码的品味
写出好代码首先要知道什么是好代码。
强烈建议以下书籍(编程经验2年左右再读比较合适)
《代码大全》
《从小工到专家,程序员的修炼之道》
《编程珠玑》【没有项目基础看起来会不知所谓】
20、内事不决问百度、外事不决问谷歌
一般你遇到的问题,十有八九也有人遇到过
21.、出现bug主动查,不管是不是你的
这能让你业务能力猛涨、个人形象飙升;
如果你的bug被别人揪出来.....呵呵,那是很被动很尴尬
22、提问前先做调研
提不到点上去,浪费时间还容易被鄙视