请大家多多点赞,评论,转发,关注!!!谢谢
这一次我来和大家说一说大公司做项目是如何保证代码质量的!
代码质量这个东西确实是企业级开发,它与我们平常自学甚至是包括我们实验室做东西都可能是不具备的。所以说这也是那些还没进入职场的朋友们所好奇的东西吧。对于大公司来说,代码质量确实是他们赖以生存的一个土壤,我们那个时候在大公司里面经常说的一句话就是产品质量是红线,然后时候都不能逾越。而产品质量终最重要的也就是代码质量,现在我就和大家说说大公司是如何保证代码质量的!
第一方面
意识培养+成文规范的保证,在我们新员工入职到部门之后,有一个“业务培训",而业务培训很重要的一项就是代码培训。我们当时是15年入职的时候,那个时候培训就有clean code(代码整洁之道)培训、编程的最佳实践也会培训(C语言的)。再就是部门或是是团队会有一套成文的编码规范,这个是我们当时一进去就开始学习的,也就是类似于那种开发者手册一样的。比如像什么命名、全复杂度、单月测试、覆盖率等等等的指标性要求。
第二方面
我觉得第二方面是我们代码质量好的最根本的原因就是:强大的CI(Continuous integration)守护系统,CI是一个"持续集成"的简称,不懂的可以去百度一下。简单的理解就是:一天多次、十分频繁地将代码集成到代码块的主干上去,但是会做各种各样的检查和测试来保证代码质量,这就是"CI防护网",说白就是我们写完代码往库里提交都会经过一层层的筛查,然后这个代码才有可能入库。因为每一天这样的动作都非常频繁,所以我们叫做持续集成。到现在出现了一个比CI更进一步的叫CD,叫“持续发布"或者叫"持续部署"都可以,首先我们自己开发代码实现功能之后,除了自查代码语法之外,还要再我们电脑的本地来跑各种各样的检查。那个时候我们做的是C语言的项目,包括但不限于全复杂度、PCLinl还有一些安全分析和各种单元测试等等等的一系列的检查,如果没问题了,我们就会开始推代码入库(git push里面),代码入库之前会被CI防护系统所拦截,CI系统就会开始帮你做最完全的检查、诊断和测试。那CI系统会怎么做呢?首先会先把我们的代码所合并起来,因为我们代码库是拆分的,但是它整体还是一个系统,代码合并完之后就会进行编译,编译完之后就是各种各样的静态检查。而我们当时那个CI系统还是那种比较强大的分层多维度CI,首先是每提交合并一次代码,CI防护系统就会防护一次(Verify CI)也就是验证CI,如果这个流程不通过的话直接代码打回。另外我们每天凌晨会定时做一次CI守护,这个时候的CI叫做“Daily CI"。而这个Daily CI和Verify CI做的东西基本上差不多,但是比Verify CI更加全面,因为Verify CI很多时候做的是增量检查,而我们凌晨做的那个可以认为是全量检查。而企业级开发代码质量好的原因最重要的我觉得就是CI保护系统。
第三方面
严格的code review(代码检查),说白了也就是把你的代码给别人去检查,code review这个东西是必须要做,而且这一步如果不做的话后面的流程也走不下去。如果CI检查之后,我们的代码通过了就会走到代码审查者哪里(不通过就会打回来),我们那个时候代码审查一般是交给team leader(团队的骨干)来做,如果team leader也通过了,那ok,你的代码才能真的入库。如果不通过打回到自己这里来,自己再进行检查,检查完之后在提交CI防护网,然后再又回到team leader。总之是一个非常闭环的操作。
第四方面
强大的度量系统,给大家举一些简单的例子:我们每个人每个月写了多少代码,增加了多少行,、删减了多少行、净增多少行都会有一个详细的报表,而且还会去要统计CI不通过率。如果你一老是提交之后,CI总是不通过会对你有非常大的影响。因为会挂出来!!!都能看得到!!!全公司的那种!!!
好了,今天和大家的分析就到这里了,谢谢观看!
网友评论