后端系统开发之检查意识
生活中要有常识意识,行走在外要有交通安全意识,竞技游戏中要有参战和逃命意识。软件开发作为一项极易踩坑而且犯错成本很高的工作,一定要有强烈的检查意识。我在工作中发现,检查意识能带来很多明显的好处:
检查代码可以加快开发完成时间。大型的C++工程中代码编译速度很慢,短则几十秒,长则十几分钟。因此写完代码就直接编译是非常错误的选择,应该首先由开发者检查代码,解决显而易见的错误,然后再进行编译。理想的情况是我们开发的代码可以一次编译通过,做到这点其实不难,只需保证有以下的检查意识:
(1)写完一行代码后立即回过头检查这行代码。
(2)推而广之,写完一段代码、一个函数、一个类、一个源码文件后都应先检查,再做其他工作。
(3)脑海里有一个检查依赖意识,例如用到的类属于哪个名字空间,需要包含哪些头文件,BUILD或Makefile需要如何修改等。
有了以上检查意识后,可以显著提高开发效率,同时增强编程信心。
检查命令可以避免犯错。相信很多人都经历过微信上消息误发送、电脑上文件误删除这样的事情,手快只是借口,没有检查核对才是根本原因。作为后端系统开发者,没有经历过"rm -fr *"的人生是不完整的,但是在同一块石头上绊倒两次是可耻的。
不久前一名顺丰工程师因为操作不当,误删线上数据库被公司开除,在软件开发行业,犯错代价是很昂贵的,前人用血泪踩过的坑,我们不应重蹈覆辙。因此我们在执行拷贝、修改、删除等命令时一定要小心,检查一下没有任何坏处,每次只多花几秒钟时间,保护的可是我们整整几十年的职业生涯。
检查日志可以排查明显的错误问题。程序运行结果与预期不符时,检查ERROR日志总是一个很好的习惯。ERROR日志可以帮我们快速排查问题,例如配置缺失、参数不正确等。(如果没有ERROR日志,这时就需要通过gdb设置断点,结合代码进行调试了。ERROR日志和gdb一直都是最基础、最有效的排查问题手段)
通过上线检查清单(Checklist)可以快速发现系统问题。当某个功能点上线时,难免会对系统带来未知影响。我们可以通过设置检查清单来把这种未知影响降到最低。上线检查清单不拘于形式,可以是简单的电子表格、堆砌的关键词列表等,内容应尽量全面,最好涵盖本次上线会影响的每个具体功能点。通过Checklist我们能够对上线的效果做到心中有数,减少不必要的担忧,增强开发信心。
InfoQ上有一篇很妙的文章叫《使用检查清单组织软件开发流程》,详细阐述了检查清单的好处和高级玩法。其实很多软件公司和团队都已经在这样做了,只是在应用深度和广度上有些差别。对于开发者人员,有这样的检查清单意识可以让你很快获得“考虑事情周全的老司机”荣誉称号。当然这只是个称号而已,千万别真的相信,因为BUG会像程咬金一样突然从半路上杀出,分分钟把脸打。
一句话总结:检查意识就是让自己学会“慢下来”,带着思考去行动,因为欲速则不达。
金句分享
I spent my whole life trying not to be careless. Women and children can be careless. But not men.
我费了一生的精力,让自己变得十分谨慎。女人和小孩能够粗心大意,但男人不行。
——出自美国经典电影《教父》
解读:诸葛一生唯谨慎。