说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

寓教于乐 给代码审查者的几点建议

HTML文档下载 WORD文档下载 PDF文档下载
代码审查涉及四大领域,开发者自身、审查者、学习者以及传教者。可以说,贯穿整个技术和知识领域。本文我们将阐述这四者之间的关系,并给代码审查者提出几点建议,更好的为你的项目和团队做贡献。

原文作者Anna Gos发表了一篇博文《Code review FTW》,以下为译文:

在软件开发项目中同行代码审查是一种常见的做法。有人认为,代码审查有助于识别潜在的Bug以及规范项目编码标准。虽然我不同意这个观点,但不可否认的是代码审查对项目和团队的确有很大帮助。代码审查涉及四大领域,开发者自身、审查者、学习者以及传教者。可以说,贯穿整个技术和知识领域。


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

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

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

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

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

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

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

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

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

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

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

英文出自:Anna Gos

日本很积极:富士通和NEC确认将推Tizen设备 10大支持移动“触摸操作”的JavaScript框架推荐 数据科学家的争夺及美分析学专业研究生院的建立 从开放走向封闭 Netflix宣布停止发布API key 《植物大战僵尸》神秘续作:可能是一款横版游戏 高性价比:GlassUp宣布支持Windows Phone系统 未挖掘到足够信息:非收集数据少,是利用率只有1% 下一个帝国:谷歌收购初创公司DNNresearch 苹果更新Apple Store应用,可查看零售店库存 开源软硬件:福特汽车的OpenXC计划 Temple Run:Oz稳坐付费榜头把交椅,迪士尼名利双收 Facebook开放图谱示好开发者 新增书籍电影等九项操作 源代码管理的六大视觉模式 最新算法面世 可提高云数据库性能 分析称平板电脑应用将占全球应用经济的35% 三大运营商对微信等OTT业务摊牌 Runscope联合创始人John Sheehan:API已死,API永存! IBM在京发布大数据白皮书 提出五项关键建议 Twitter开源Parquet 将支持Impala加速实时查询 使用Go代替Ruby,将服务器数量从30降到2 初创公司SwiftStack:“放在盒子里的S3” 赫尔辛基:全球移动游戏开发者的“黄埔军校” 不只属于三星!uMoove将发布“眼球追踪”SDK Android掌门人Andy Rubin宣布辞职 Chrome主管接任 openSUSE 12.3发布 弃MySQL拥抱MariaDB Meteor:让实时Web App成为主流 别了,Google Reader!谷歌于7月1日关闭服务 “天网”降临 机器人或将崛起? 涅槃重生:Qt 5 for Android预览版发布 Google Play将逐步移除广告拦截应用 Shapeways公司开放API 3D打印时代来临 痛苦啊,难道要放弃BCB吗? 大家认为在开发过程中是否不能用全局变量? 如何让LINUX支持我显卡 高手,谁来帮我一下~! 取字符 在SDK中,如何获得客户区的宽度和高度呢??(哪两个函数呢?) 哪里有ATL的电子书下载?最好是中文的! 高手谁能帮帮我呀~~~~~~~! 请教:如何在statusbar的panel中显示一个图标呢? VC++中如何使用OLE对象? 初来乍到,发现这儿JJMM还挺多的。。。 请高人指教~! CSDN中碰到这种问题,该如何解决呢? 如何学习director 你能帮我一下吗?~ 企业商务管理软件,开放全部的源代码及开发文档! 企业管理软件,全套源码及开发文档!!!! 哪里有支持任何波特率的通讯控件下载? net_lover(孟子E章)请进~! 一个有关CWebBrowser的问题,急急急!!! 这样的语句为什么不可以实现一次删除多条记录 plmm是什么意思? 各位大侠,知道哪儿有直接可用的上传文件的控件吗? 多谢了!!! 论坛的题目是不是太没意思了 一个sqlserver7统计的问题?? varchar类型不是可以输入255个字符吗,为什么我输了160个就出现'item XXX doesn't pass validation test ' 唉 ~~~~~ 奈何 ~~~~~ 突然想到个荒唐的问题: 事件和过程有什么不同? 奇怪的事前,高手请进来 我的问题还没有解决~! 这里的高手呢,人听多,会的人不多 申奥倒计时,如果你在线,请进来验证这以历史性时刻,谢谢 我有一个用hook截获鼠标移动的dll,但是没有效果,请问怎么调试? 请教,怎样在java中把Button的背景改做一个图片 对delphi5一个自带例题的疑问。 爆炒MM之水园MM ID一览 窗体和控件的自适应问题? 求《unix》环境高级编程的源程序下载。 在MIS或WEB中有大量的对数据操作的工作,是否所有的insert,update,delete工作都需lock and unlock??? 紧急求助:那里有pb7的最新版本下载(mark200106@sina.com) 感谢stanely :) 哪里有《unix环境高级编程》所带的源程序下载? 关于quickrep得统计问题,为什么我只能把所有的数据累加而不能累加一个grouphead和groupfoot之间的数据 关于ATL做ActiveX控件的问题 关于jc文件的问题 请问:在用ADO执行查询操作时,如出现“超时”错误,应该有哪些解决办法? 帮忙算一下JB5的激活代码,呵呵 模板问题 软件发布:捉图王 DirectX 的编程问题小 怎样用VB写收发邮件的控件,现成的也可以,多谢!!! 当a=-2时,a+2a+3a+4a+.+100a= -化简求值2/3a-{1/3-[(3a²-5a+1)]},其中a=3 a^2+6a+9分之4-a^2÷2a+6分之a-2+2 已知角a的中终边上有一点坐标p(3a,4a) a不等于0 求sina cosa tana 的三角函数如题 考试中 a= 2,a+2a+3a+4a+...+100A=? 化简求值2/3a-{1/3-[(3a²-5a+1)-1/3a-5]} 设a<0,角阿尔法的终边经过点P(-3a,4a),那么sin阿尔法+2cos阿尔法的值等于 5(3a方b-ab方)-4(-3ab方+2a方b),其中A等于-2,B等于3化简求值 化简求值2(3a-1)-3(2-5a+3a²),其中a=负三分之一,其结果为多少? 已知角α的终边经过点P(4a,-3a)(a≠0),求2sinα+cosα的值? 化简 3a²×根号下2/a 化简求值:(-5-a²+3a)+(-a²-5a+4)其中a=-1/2 设角α的终边上有一点P(-4a,3a)(a≠0),则2sinα+cosα的值是( ) 怎么求? 求解过程,急!给悬赏!先化简,后计算:81-a²/a²+6a+9÷9-a/2a+6×1/a+9,其中a=根号3-3 5a²+[a²+(5a²-2a)-2(a²-3a)]其中a=-1/2 先化简再求值1/2(x²-y²)-4(2x²-3y²)其中x=-3y=2 已知角a的终边上有一点P(3a,4a) (a 已知根号2a-3+b=4,化简根号a²-2a+1-根号b²-8b+16 先化简,后求值:(5a²-3b²)+(a²+b²)-(5a²+3b²),其中a=-1,b=1. 设α角终边过点p(3a,4a)(a≠0)求sinα,cosα,tanα? 已知b 先化简,在求值 5a²+3b²+2(a²-b²)-(5a²-3b²),其中a=-1,b=1/2 设α角终边过点p(3a,4a)(a≠0)求sinα,cosα,tanα? 已知:a<0,化简:根号下4-(a+a分之一)²-根号下4-(a-a分之一)² 先化简再求值(5a²-3b²)+(a²+b²)-(5a²+3b²)其中a=-1 b=1 已知角B的终边过点P(-4a,3a)Simb.cos b.tan b谁知道怎么整啊 已知a=1-根号2,先化简,再求(a²-1)/(a²+a)+根号( a²-2a+1)/(a²-a)值老师讲的答案和我算的不一样,求过程 化简:1、-5a²(3ab²-6a³);2、[x(x²y²-xy)-y(x²-x³y)]÷3x²y;3、已知(a的n次方b的m+1次方)³=a的9次方b的15次方,则m的n次方=? sin²a+cosˇ4a+sin²acos²a 化简 若a²-3a=9,则2a²-6a+3的值是-----------------. 先化简 在求值3a^3-6a^2b/a^2b-2ab^2 ,其中a=3,b=1 2.证明:sin²²a+cos²²a=1-2sin²acos²a 22是4噢2.证明:sin²²a+cos²²a=1-2sin²acos²a 22是4噢 打不出这个符号 a-²b-³·﹙-3a﹣¹b﹣²﹚÷6a﹣⁴b﹣²的结果是?请带上过程.(-²这个是负二次方,其余的也是这样) 化简(a+b)(a-b)-(3a-2b)(3a+2b) 求证[1]1-2sin acos a/cos²a -sin²a =1-tan a/1+tan a.[2]1-cos 2θ/1+cos 2θ=tan²θ 若√a²-3a+1 +b²+2b+1=0,求3a²-6a+1/a²-(-b)²的值.若√a²-3a+1 +b²+2b+1=0,求3a²-6a+1/a²-(-b)²的值。 化简 |a+b|-|3a-2b|a sin∨4a-cos∨4a=sin²a-cos²a 求证 下列各式计算正确的是A(-3a²b)(-2ab²)=6a³b²B(﹣2×10)²×(6×10³)=1.2×10的5次方C﹣2a²(2分之1ab-b²)=﹣a³b-2a²b² D(﹣ab²)³=﹣a³b的6次方,若ab²= 化简(3a+2b)(2a+b)-(2b+a)(b+a) 证明:sinα^2+sinβ^2-sinα^2sinβ^2+cosα^2cosβ^2=1 已知a²+b²-6a+8b+25=0,求3a+4b的值. 当a>0,b 证明:1-2sinα cosα/cos^2α -sin^2α=1-tanα/1+tanα 因式分解:(3a+2b)²-(3a-2b)²和9x²-4y² 化简求值 (3a+1)(3a-1)-(2a-3)(3a+2),其中2=4分之一 证明[2-2sin(α+3π/4)cos(α+π/4)]/(cos^4α-sin^4α)=(1+tanα)/(1-tanα) 6a²-9ab+3a 因式分解 化简求值:3a(a^2-2a+1)-2a^2(a-3),其中a=2分之3 证明sin^4α-cos^4α=2sinα²-1 因式分解3a²-5ab+2b²加上:若多项式f(x)=x的四次方-x的三次方+ax²+bx+c能被(x-1)的三次方整除,求a,b,c的值设abc是三角形的三条边,则a的四次方+b的四次方+c的四次方-2a²b²-2b²c² 化简求值: (3a-7)(3a+7)-2a(二分之9a-1) 其中a=*3 证明(1-2sinθcosθ)/(cos^2θ-sin^2θ)=(cos^2θ-sin^2θ)/(1-2sinθcosθ) 化简5a^2-[a^2+(5a^2-2a)-2(a^2-3a)] 若3a^2-a-2=0,则5+2a-6a^2=____________ 当a=-2时,a+2a+3a+4a.+100a等于多少 5a²+[a²+(5a²-2a)-2(a2-3a)],a=-二分之一 先化简再求值 (3a^2)^3-6a^3(2a^2+3a^2+a) a=-2时,a+2a+3a+4a+.+100a等于多少 化简求值:5a^2+[2a^2+(5a^2-2a)-2(a^2-3a)],其中a=-1/2 (2a+3/a^2+1)-(a+3/a^2+1)*(2a^2+6a/a^2+6a+9)化简
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn