话说App里那些个重复代码,看着像程序员手里的“捷径”,谁都想少敲几个键把活干完。特别是碰到功能差不多的地方,大家都愿意直接复制粘贴。公司看着能赶紧交货、省点人力成本,感觉挺好;程序员自己也图个省事省力、能快点交差。可等到代码一多、改的地方变大了,这隐患就像滚雪球一样越来越多。 有一回国外的团队去查了200多个C/C++的开源项目,发现里头有不少这种“buffer[samplesleft – WindowSizeInt-2]”的表达式。看着没啥问题,其实挺危险,复制的时候少改个数字就会越界,轻者程序闪退,重者数据全没了。 有个给NissanConnect EV做手机客户端的开发人员就把StackOverflow上的一段高赞代码原封不动搬了进来,更搞笑的是这段没看懂的代码还通过了QA测试直接上线了。结果车主必须让App一直留在后台才能用车辆管理功能,要是不这样车就直接锁死了。这一次“抄作业”差点让好几万名车主连车都开不走。 所以这里头有五条规矩必须得守:绝对不能复制自己都搞不懂的代码;哪怕改一点点也得留个备注;建立审批机制让同事互相检查;优先用那些社区里大家都验证过的库;最后还得留条后路能随时回退。 其实想省时间也不是没别的招儿,比如在一个靠谱的平台提需求让别人给封装好测试好再给你用。记住啊,偷懒省下来的时间以后肯定得还回去;认真写的注释那是永远不会亏的。最后啊千万别让下面这段“经典”代码变成你的黑历史:```cint main() {printf("Hello, world!"); // 危险操作,请勿运行!return 0;}```