阅读更多

12顶
0踩

研发管理

翻译新闻 给代码审查者的几点建议

2013-08-20 10:47 by 副主编 WnouM 评论(3) 有8986人浏览
在软件开发项目中同行代码审查是一种常见的做法。代码审查有助于识别潜在的Bug以及规范项目编码标准,对项目和团队的确有很大帮助。

代码审查涉及四大领域,开发者自身、审查者、学习者以及传教者。可以说,贯穿整个技术和知识领域。



1.  Teaching + Programming (教学+编程)

代码审查为你提供与同伴分享编程知识的好机会。在这里不是为了炫耀你学到的最新技巧,而是去帮助改善另一名开发者的技能。作为一名程序员你可以积极的贡献出个人的成长历程,提供最宝贵的经验反馈。利用特定的技术或者引入具体的项目实践是指导新手的两大最有效方法。

2.  Teaching + Domain(教学+域)

大多数内置的软件项目具有不平凡的域特点。 一个不平凡的域需要大量的模型来表示其行为和代码属性。由于代码的模型行为和属性是两个密不可分的部分。因此,审查者在整个域建模思路中扮演一个极其重要的角色。

3.  Learning + Programming(学习+编程)

开发者在代码审查上会利用不同方法来解决问题。观察和理解其他程序员编写的代码是改善代码风格、掌握技术、了解新的类库以及学习新的模式最有效的方式之一。

4.  Learning + Domain(学习+域)

在代码中捕获信息是学习域的概念和整体功能一项最基本的资源。代码实际上是一个软件系统最详细的文档列表。理解性的阅读代码能够有助于扩展理解系统以外的内容。

大多数开发者会在代码审查领域中游离,因为他们想成为更好的程序员以及学习更多的域知识。尽管有些开发者有机会学到更多,但他们常常会因此而感到满足。如果一名开发者在某个项目中采用新技术(除了这个领域的专家),他将扮演两个角色。在某种情况下审查者会发现自己同时处在四个领域。 意识到这些领域的优势是做代码代码审查最宝贵的经验,无论审查者的资历水平如何。

给代码审查者的几点建议:

1.  让团队中的所有开发者拥有代码所有权

作为开发者,我们喜欢在家编码的感觉。代码审查从代码所有者切换至团队作者,他们拥有共同的利益。这种关系的转换使得整个团队都在为代码质量而负责,任何一名团队成员都应积极拥抱变化。此外,在极限编程中还涉及到共享代码(或集体代码所有权)问题。

2.  逐步提高开发者的编码技能

同行审查能够提高团队的平均技能水平。此外,它还具备了无形的压力促使开发者更写更好的代码。

3.  传播域知识

理解从代码中捕获的功能有助于在整个团队成员之间传播(共享)系统知识。它使整个团队间更有凝聚力,有效避免了任何一名开发者在任意系统工作领域中“挑三拣四”的情况发生。

4.  培养集体智慧

团队整体完成的项目质量要远远高出开发者独自完成工作的总和。每位开发者都可带来不同的技能,实现协同编程,为团队“添砖加瓦”。

代码审查是我最喜爱的团队建设活动之一。它不仅是关注代码,而且还能见证整个团队的成长。值得一提的是,结队编程常被看作是代码审查的一种极端形式,这是一种值得推崇的代码审查方式。

英文原文:Code review FTW
  • 大小: 9.9 KB
来自: CSDN
12
0
评论 共 3 条 请登录后发表评论
3 楼 freezingsky 2013-08-24 20:19
hiqrf 写道
天天检查代代码也烦啊,现在天天为实习生写的代码擦屁股啊......

请问你们是怎么检查的?一行一行的看?
2 楼 yuquan0405 2013-08-23 10:40
现在中国式中小软件公司!只注重开发效率!不看重审查质量!
不知如何处理 !
1 楼 hiqrf 2013-08-22 22:01
天天检查代代码也烦啊,现在天天为实习生写的代码擦屁股啊......

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • 高性能LED路灯驱动器设计方案

    摘要:在阐述LED 路灯应用需求的同时, 提出了一个为100个高功率LED供电的可行性驱动器解决方案。该解决方案采用模块化结构, 可为设计者提供很大的灵活性, 而且拥有较宽的输入电压范围, 能够满足各种设计的需要。...

  • LED照明中的模块化结构的高性能大功率LED驱动解决方案

     接下来路灯可能是LED 技术大规模应用的下一个领域。与手电筒和低功率应用实例相比, LED路灯应用也意味着更大的挑战。  1 设计要求  LED路灯照明不会一蹴而就, 因为尚有重大的技术难题需要攻克。除了个别情况...

  • 《GPU高性能计算之CUDA》实例

    本书除了详细介绍了CUDA的软硬件架构以及C for CUDA程序开发和优化的策略外,还包含有大量的实例供读者学习参考用。 下表是各个实例的介绍列表。 文件夹 对应书中章节 备注 ACsearch_DPPcompact_with_driver ...

  • 性能测试实例讲解

    今天我们就来飞享一个医药管理系统的性能测试实例,具体内容包括系统描述、系统模块、注意事项、性能测试过程等等。 一、实例概述 1、系统描述 医药管理SMS2系统(安装环境:CentOS7.2),注册网址:192.168.X.XX ,...

  • 微服务与领域驱动设计:构建高内聚低耦合系统的指南

    领域驱动设计DDD是一种设计思想,它可以同时指导中台业务建模和微服务设计(中台本质是业务模型,微服务是业务模型的系统落地),领域驱动设计强调领域模型和微服务设计的一体性,先有领域模型然后才有微服务,而不是...

  • 显示/光电技术中的高性能LED路灯驱动器设计方案

    摘要:在阐述LED 路灯应用需求的同时, 提出了一个为100个高功率LED供电的可行性驱动器解决方案。该解决方案采用模块化结构, 可为设计者提供很大的灵活性, 而且拥有较宽的输入电压范围, 能够满足各种设计的需要。...

  • 事件驱动架构及实现

    什么是事件驱动?为什么要使用事件驱动?如何设计事件驱动?

  • 驾驭复杂性:领域驱动设计的核心理论分析

    领域驱动实践总结一:基本理论总结与分析 一、领域驱动设计两大设计:战略设计和战术设计 二、理解和分析领域+子域+核心域+通用域+支撑域 三、理解和分析界限上下文,定义领域边界 四、理解和分析实体和值...

  • 业务驱动架构(BDA):以业务为核心的软件设计方法

    业务驱动架构(Business Driven Architecture,简称BDA)是一种以业务为核心的软件设计方法,旨在提高软件的灵活性、可扩性和可维护性,以满足不断变化的业务需求。BDA的核心理念BDA的架构图BDA的优势BDA的实施BDA的...

  • java源码包---java 源码 大量 实例

     Message-Driven Bean EJB实例源代码,演示一个接收购物订单的消息驱动Bean,处理这个订单同时通过e-mail的形式  //给客户发一个感谢消息,消息驱动Bean必须实现两个接口MessageDrivenBean和MessageListener  在...

  • LoadRunner 性能测试实例

    LoadRunner 是一种预测系统行为和性能的工业标准级负载测试工具。通过以模拟上 千万用户实施并发负载及实时性能监测的方式来确认和查找问题,LoadRunner 能够对整个 企业架构进行测试。通过使用LoadRunner , ...

  • Serverless中的事件驱动架构设计与实现

    随着近几年云计算、微服务、容器技术等技术的发展,越来越多的人开始转向云原生...事件驱动架构(Event-Driven Architecture,EDA)是一种面向事件的应用架构风格,它通常是指利用事件触发执行功能或业务逻辑的方式。

  • 【DDD】领域驱动设计实践 —— 架构风格及架构实例

    同时,在DDD的设计思想下,六边形架构风格,让领域模型处于架构的核心区域,让开发人员将焦点聚集到领域。 DDD和六边形架构是天然契合的,是DDD的首选架构。 REST REST——即Representational State Transfer...

  • 单片机程序设计中运用事件驱动机制

    摘要:通过实例说明将事件驱动机制应用到单片机程序中,使中断响应与处理程序分离,可较理想地用硬件定时代替处理程序中的软件定时,从而大幅提高系统对多中断的实时响应能力,降低多中断系统调试的难度。...

  • GPU高性能计算之CUDA》实例

    本书除了详细介绍了CUDA的软硬件架构以及C for CUDA程序开发和优化的策略外,还包含有大量的实例供读者学习参考用。 下表是各个实例的介绍列表。 文件夹 对应书中章节 备注 ACsearch_DPPcompact_with_driver...

  • 【DDD3】领域驱动设计实践 —— 架构风格及架构实例

    3. 架构实例 架构图  架构详述   正文 本文是【DDD】系列文章中的其中一篇,其他可参考:使用领域驱动设计思想实现业务系统     1. 概述 DDD为复杂软件的设计提供了指导思想,其将易发生变化的业务核心...

  • 事件驱动架构的性能优化技巧:提高系统性能与响应速度

    1.背景介绍 事件驱动架构是一种异步、高度可扩展的架构模式,它在各种应用场景中得到了广泛应用,如微服务架构、大数据...因此,在设计和实现事件驱动架构时,需要关注性能优化的问题,以提高系统性能和响应速度。...

  • erlcass:基于DataStax cpp-driver的高性能Erlang Cassandra驱动程序

    v4.0.0的注意事项从erlcass v4.x版本开始,本机驱动程序基于Datastax cpp-driver> 2.10.0,这是一个庞大的发行版,其中包括许多新功能以及体系结构和性能方面的改进。 一些集群配置已删除,而其他配置已添加。 有关...

  • 步进电机基本原理及驱动方式详解

    下图显示了该电机结构的简化示例,我们可以看到,现在转子的齿与 A 极的齿对齐,而与 B 极的齿不对齐。,其主要目的是减弱或消除步进电机的低频振动,提高电机的运转精度只是细分技术的一个附带功能。细分是步进电机...

  • 基于springboot大学生就业信息管理系统源码数据库文档.zip

    基于springboot大学生就业信息管理系统源码数据库文档.zip

Global site tag (gtag.js) - Google Analytics