作者:苗现方 想要做好代码质量,我们不得不提什么是代码质量?本文中讨论的代码质量普通是指代码的作风、重复率和复杂度等,代码是技术团队的价值产物,是可贵的财富,同样代码质量的好坏能够直接表示出团队的注重水平和技术管理水平。 代码质量的降落是内在缘由,通常会恶性循环,主要表示出以下两个特性: 感染性:坏代码总能在部门渲染着只需业务托付达成,代码质量不重要的负面氛围,严重减低了研发人员的技术热情,破坏工作氛围,招致更多的坏代码呈现。 心理暗示性:在坏代码基础上继续消费坏代码的"罪恶"减轻。 为什么会产生这样的结果,这里我与你举个生活中的栗子,我在上个周日收拾房间,发现一个房间衣柜中的衣服很乱,花了很长时间才叠放好,过两天晚上下班回家,我发现客厅沙发上也很乱,衣服、电脑、背包、零食简直日常的小物件都会有,两件事情合在一同想,这的确是一个很有趣的思索,为什么会是这样的?在一个相对封锁的空间中,任其无认识地随着时间的展开,房间和沙发也一定很乱,留意,这里我说的是无认识,也就是我并没有刻意放,或者去刻意整理。带着这个思索的结果,我又察看了大家的工位、园区内景观,一段时间内一定会呈现乱象,不外经过一顿管理之后很快恢复到有次序,好,大家能够猜到这是什么定律,就是熵增定律,不了解的能够自行网络科普,那么在质量域中依然存在这样的定律,不然熵增定律也不会被古今中外的物理学家所推崇备至,它的定义是:在一个孤立系统里,假如没有外力做功,其总紊乱度(即熵)会不时增大。 代码质量在软件项目是一种有序的状态,自然总是向着无序展开的,要想坚持这种有序,需求主动投入资源,就像整理房间,花草修剪一样。 回到我们的多数开发工作中,我们面临的现状是这样的: 1、业务托付压力大,需求优先上线,业务逻辑完成优先级最高,没时间没肉体关注代码质量,以至终极目的就是需求上线,招致坏代码产生,开发效率逐步降落,随着后续版本的迭代,业务托付压力越来越大。 2、呈现了1的状况后,我们认识到压力越来越大,为了对付这种托付压力,常见的伎俩就是增加人力,但是一味的增加人数,沟通成本及作风的分歧性无法得到保障,这将进一步产生更多的坏代码。 针对以上2个现状,我们该怎样着手处置。 我的倡议计划是多渠道,系统性处置问题,首先控制人力的大量投入,主动发起对代码质量中止管控,其次持续提升技术升级。但是,从减轻业务托付压力的结果来看,人们常常倾向于增加人力来快速处置问题,技术升级需求靠长期的投入才干有所收获,所以,我们需求在质量方面增增强有力的管控。 假如做好代码质量管控? 代码质量管控首先应处置两个问题,库存坏代码和增量坏代码。 想处置这两个问题,我们要对现有的系统、人员、工具、流程整合构成一套体系化的计划。 对代码质量管控,经过在部门内工程理论,我以为需求阅历以下这四个过程,部门内树立代码规范制度(EOS)、检查代码问题的自动化工具(bamboo平台)、代码质量检查与代码活动过程绑定(质量门禁)、部门视角下,集中管理代码规范和质量状况的透明(代码质量评测系统)。 过程一:代码质量的基础是规范,包含代码作风的规范、长期一线代码理论规范、与业务需求相关的特殊规范,例如风控文案、异常托底文案等。 过程二:完成自动化的检查才干是在规范基础之上,经过自动化工具中止检查,包含对代码重复率、圈复杂度、单测case经过率、静态规则扫描等。 过程三:完成质量检查与代码活动过程绑定,在编辑-构建-提交-发布各个时段部署检查才干保障上线代码必须经过机器和人工的多环节检查。 过程四:团队范围逐步扩展,各业务线项目快速展开,完成规范管理统一、项目请求分歧、各项目质量状况透明、对比,树立统一的评测体系。 为了让你有一个很直观的认识,我在下面画了一个张图,希望能够辅佐快速了解。 总结: 在日常开发工作中,大家都会想到经过增加人手来缓解项目托付的压力,这是能够了解,但是从整体角度看,人员的增加会产生越来越多的坏代码,使整体的效率降落,这又进而加剧了后续项目托付的压力,在这种压力下,又经过增加人手缓解......让代码质质变的越来越差,这也是房间为什么会越来越乱,是熵增定律在软件质量域的生动表示。 为了抑止这种恶性循环,我们认识到了经过有效的伎俩和资源投入中止各项工程理论,逐步完善代码质量的管控体系,积聚很多措施和工具。 目前,我也在积极探求对统一代码质量评测体系的理论,希望逐步树立一套中心化的代码质量评测系统,在这个系统中让工匠肉体、专家文化借住平台进一步传播、让系统的质量愈加透明。 |