加强管理能提高代码质量吗?

简介: 代码质量是咱们程序开发中永远的一个痛,提升代码质量有很多种方式,强化管理是一种很常见的方式,这里咱们就聊聊,所谓的管理,真的是提升代码质量最有效的方式吗?外包团队进行代码实现,可以吗?很多企业喜欢将系统的代码实现细节交由外包团队处理,声称只要产品设计的合理,只要架构合理,只要代码规范合理,代码的实现找谁实现都是一样的,所以干脆找外包团队来实现,这应该是很多非互联网公司,特别是传统企业的思路。

代码质量是咱们程序开发中永远的一个痛,提升代码质量有很多种方式,强化管理是一种很常见的方式,这里咱们就聊聊,所谓的管理,真的是提升代码质量最有效的方式吗?

外包团队进行代码实现,可以吗?

很多企业喜欢将系统的代码实现细节交由外包团队处理,声称只要产品设计的合理,只要架构合理,只要代码规范合理,代码的实现找谁实现都是一样的,所以干脆找外包团队来实现,这应该是很多非互联网公司,特别是传统企业的思路。但是,结果真的是这样吗?
经历过的人应该都是有很深的感触的,外包团队开发的代码和公司内部人员开发的代码,质量上是有很大的扯别的,且不论这是因为技术本身的差别,因人而异,因环境而异,因心态而异产生的代码就有很大的不同。
软件是一个工程化的产品,那么工程化产品的特点是什么?

  • 长期运营维护
  • 频繁的变更
  • 高频沟通

你让一个没有融入感的人去做这些事情,会有一个好的结果吗?都说做菜要用心去做,其实编程也是需要用心去完成的工作,一个小的疏忽都可能会造成严重的后果,公司内部人都无法100%保证,外包团队能保证吗?
最后说明下,外包不会节省成本,从短期来看,人员成本不会少,可能只是降低了一定的人员异动风险,长期来看,是一项非常不划算的投入。

代码质量通过奖惩来进行强制执行,可以吗?

以前一直看到网上的段子,有的公司通过bug数量来判断一个人的绩效,例如:bug多的程序员,绩效评分低;测出bug多的测试工程师,绩效评分高。本来一直以为是段子,后来接触的人多了,发现很多非IT专业的管理者都有这样的想法,虽然,在我个人和团队的强烈反对下没有执行,但是,这种思想对很多人来说是根深蒂固。通过奖惩能有效提高代码的质量吗?
没有一个软件是完美的软件,所有的软件都是有BUG,“上次造人都有BUG,何况人制造软件呢?”大如微软这样几十年的老牌IT企业,还是BAT这样的新兴互联网大厂,即使项目投入的人再多,再优秀,也是无法保证软件是没有BUG的。而且如有根据BUG来考评,有两个非常严重的问题:

  • 多做多错,那么我不做或者少做,那么BUG就很少了。
  • 发现BUG,不愿意暴露BUG,而是偷偷的处理掉。

这与鼓励创新、鼓励分享的IT技术显然是背道而驰的。

建立良好的代码审查制度,可以吗?

为了提高代码质量,团队都会定义代码审查的制度,如“工作经验不足**年的代码必须由主管审查”,“新入职员工的代码必须师傅审查”,“开发经理定期对核心代码进行审查”等,这些规定实际也是有一定的作用的,至少对统一新同事的代码规范,提升经验尚浅的开发人员能力是有作用的,但是因为更多的依赖于人工的审查,实施起来难度比较大,而且很难坚持。之前,我们团队就坚持了一段时间这样的方式,SVN获取代码后对关注的人员的代码进行审查,但是单凭个人或者少数几个人的处理,时间一长,基本又回到原点。
其实我也一直有个疑问,真有结对编程的公司吗??开发工程师都是属于高强度工作,公司恨不得让程序员一个人写两个人的代码,怎么会两个人写一份代码。
也许我们需要找到更加先进的方法来代替纯人工的方式。

招聘更优秀的程序员

“一个优秀的程序员的效率,比100个差的程序员效率都要高。”类似的结论是IT界是非常流行的,虽然不同的程序员在能力差100倍是有点夸张了,但是一个优秀的程序员,抵5个差的程序员这样的事情在我们身边肯定是经常发生的。
我一直都认为,程序开发是一个非常需要创造性的工作,即使是简单的增删改查,不同的业务场景应该是不一样的实现逻辑和技术手段,我们在脑子里面思考问题所花费的经历真的比实现代码花费精力多得多。
优秀的程序员效率更高,效率的差距可能会出现好几倍的差距。而且,优秀的程序员,真的是BUG很少。一个简单的插入操作,优秀的程序员想到的是:如何确保事务的一致性、如何防止连续点击导致重复数据、多表的插入是否可以并行提升效率,而差的程序员只会考虑最理想的外部情况,其他的问题都是环境的问题或者操作人员的问题。难道这些,上线后出现问题了,最终就不是BUG了??最后还是需要开发人员来解决。

注重公司内部人员的培养

接上一个话题,想得到优秀的程序员无非就两种方式,招聘或者培养。前文也有说过要建立良好的代码审查制度,虽然不是一个银弹,但还是有一定作用的。其实,代码审查也可以看做是内部培养的一种方式。每个公司除了业务上的不同,我们这里暂不讨论,每个公司代码都有自己的一个风格,统一代码的风格,其实提升代码质量一个很好的方式,公司都会有自己的代码最佳实践,如业界经常流传的《阿里巴巴代码规范》《58同城数据库军规》等。所以,多花点时间让公司员工统一代码风格,能让整体代码质量有明显的提升。
同时,很多的BUG除了是技术上的问题,更多是对于业务的不了解。有个长期稳定,并且能产生默契的团队,除了有更高的效率,也能减少BUG的数量。

自动化+人工的方式提升团队能力

前文多次提到代码审查,代码审查这个方式显然是能提升代码质量的,但是涉及的审查覆盖率的问题,无法发挥全部作用,如果有个自动化的方式进行代码审查,那么应该就是一个相对比较完善的解决方案了。
现在的代码管理都是通过CVS工具进行管理的,基本都是git或者svn,通过代码管理工具进行自动化的代码审查就是一个非常好的方式。用户提交代码的时候,强制使用静态的代码审查工具(常见如findbug,checkstyled等)进行审查,无法通过审查的,代码是无法提交的。虽然代码审查工具现阶段还不是非常智能,但是基础的代码规范,空指针预测等检测还是比较完善的,能很大程度上避免重复的人工审查工作。
move fast的审查方式是很多互联网公司现在执行的一种人工审查方式,代码的commit、push必须有两个人执行,push的操作者必须审查commit的代码,这样基本能保证人工审查的覆盖率,对提升代码的质量有很大帮助。
这里提到人工的方式,那么人工的方式我们应该注意哪些呢?静态代码扫描工具能帮忙解决很多基础的代码问题,我们更多应该关注哪些静态代码检查工具无法找到的问题:

  • 关注循环体内的问题,循环体内调用外部服务,循环体内查询数据库等。
  • 涉及多线程或者其他异步处理的代码
  • try catch 的使用,特别是catch中的代码
  • 静态变量使用的问题

这些问题都是进行测试时都很难发现的问题,但是在生产环境却很容易暴露的问题。

总结

代码质量的提升是作为开发人员,特别是开发管理人员非常关注的问题,但是,要达到非常好的效果,却是没有银弹的。
所有的管理制度、管理模式等,对于创造性的工作职位实际是不会有太大的帮助,“优秀的人”才是提升代码质量最好的武器,自动化的方式结合优秀的人,也许是你想要的最佳途径

目录
相关文章
|
3月前
|
监控 测试技术 持续交付
自动化测试和持续集成/交付:提升软件质量和效率的关键
在当今快节奏的软件开发环境中,自动化测试和持续集成/交付已经成为了必不可少的工具和流程。通过自动化测试,开发团队可以更快地检测和修复缺陷,同时提高测试覆盖率和质量。而持续集成/交付则可以让开发者将代码快速、自动地构建、测试和部署到生产环境中。这篇文章将探讨自动化测试和持续集成/交付的优势和实现方式,以及如何在实践中有效地使用它们来提升软件质量和效率。
|
19天前
|
敏捷开发 监控 Devops
提升软件测试效率:自动化与持续集成的应用
【4月更文挑战第5天】 在快速迭代的软件开发周期中,确保代码质量和功能的正确性变得日益重要。本文将探讨如何通过自动化测试和持续集成(CI)的结合来提升软件测试的效率和可靠性。自动化测试不仅可以减少重复性工作,提高测试覆盖率,还能快速反馈测试结果,而持续集成的实施则允许开发团队频繁地集成新代码,及早发现集成错误,确保软件质量。文章还将讨论实施这两种策略时面临的挑战及克服这些挑战的策略。
|
22天前
|
监控 算法 安全
深入白盒测试:静态分析与代码质量保障
【4月更文挑战第2天】 在软件测试的众多技术中,白盒测试以其对内部结构和逻辑的透明性而著称。本文旨在探讨白盒测试中的一项关键技术—静态分析,它如何帮助我们确保代码的质量,以及它在现代软件开发周期中的重要性。通过深入分析静态分析工具的使用和结果解读,我们揭示了这一技术如何提高代码的健壮性和可靠性,减少运行时错误,并优化性能。文章还将讨论将静态分析集成到持续集成/持续部署(CI/CD)流程中的最佳实践,以及如何有效地利用反馈来改进代码质量。
13 1
|
2月前
|
程序员
提高代码质量的五个技巧
【2月更文挑战第2天】写出高质量的代码是每个程序员的追求,但是实现这一目标并不容易。本文将介绍五个技巧,帮助你提高代码的质量。
38 1
|
8月前
|
设计模式 人工智能 自然语言处理
代码质量难以管控?这个工具了解一下
有这么一句名言“Talk is cheap, Show me the code.” 不管是新人还是老手,都特别想提高自己的代码质量,至少让别人看着舒服。我在以往的工作经历中,因为忙于功能的实现及交付,并没有太重视个人编码的能力,包括正确性、美观性和健壮性。工作几年的人还写出那么“难看”的代码,说出去会很丢人的,所以,如何提升自己的编码水平显得尤为迫切。
|
8月前
|
敏捷开发 测试技术 持续交付
软件开发过程中的最佳实践和代码质量评估
在软件开发过程中,采用最佳实践和评估代码质量对于确保软件的稳定性和可维护性至关重要。通过明确的需求、合理的开发流程、良好的代码规范以及严格的代码评估,我们可以降低软件开发过程中的风险,并提升开发效率和软件质量。
210 2
|
9月前
|
SQL 安全 测试技术
如何进行高效的代码审查
代码审查是软件开发过程中至关重要的一环。它是指由开发团队中的其他成员对代码进行检查,以确保代码的质量和一致性。 代码审查可以帮助发现潜在的问题,例如内存泄漏、安全漏洞或性能问题。通过及早发现这些问题,可以避免它们在后期的软件开发过程中变得更加复杂和昂贵。
124 0
|
11月前
|
设计模式 测试技术 调度
【自动化测试】灵活的测试设计
【自动化测试】灵活的测试设计
65 0
|
测试技术 Android开发 iOS开发
测试思想-测试流程 软件测试版本管理
测试思想-测试流程 软件测试版本管理
70 0
|
自然语言处理 监控 安全
如何提高代码质量
说起代码质量,脑子里会冒出很多词,命名规范、格式规范、日志规范、单元测试覆盖率... 但我觉得,代码质量总结起来就两个:好看和好用。 好看是指代码可读性好,容易理解、容易维护,别人接手了不骂你;好用则指代码健壮,不容易出错,机器跑着不骂你。即使出错,也容易定位,容易止损和恢复。

热门文章

最新文章