精华内容
下载资源
问答
  • 本场 Chat 将告诉你该如何评价别人代码。评价的好,才让编码者心服口服。这样才能达到 Code Review 的效果。文章将分三个章节: 怎么通过代码读懂人心 怎么评判别人的代码 如何当面沟通 希望...

    Code Review 中不可避免将对别人的代码作出评价。评价过后,我们经常会遇到:

    1. 评价/建议后却不做出修改;
    2. 总是同一种错误,一犯再犯;
    3. 抵制你的评价意见,寻求他人再次 Review。

    本场 Chat 将告诉你该如何评价别人的代码。评价的好,才让编码者心服口服。这样才能达到 Code Review 的效果。文章将分三个章节:

    1. 怎么通过代码读懂人心
    2. 怎么评判别人的代码
    3. 如何当面沟通

    希望读完此文,经过自己的尝试,可以有效的缓解评审者和编码者的冲突。

    阅读全文: http://gitbook.cn/gitchat/activity/598282fb65b4f352972e9bfe

    您还可以下载 CSDN 旗下精品原创内容社区 GitChat App ,阅读更多 GitChat 专享技术内容哦。

    FtooAtPSkEJwnW-9xkCLqSTRpBKX

    展开全文
  • 遇到一个陌生人,只看到他沾满泥土的鞋子。... 你看到别人的种种不足,当面指出来,为什么没有感谢你? 不光没有感谢,似乎还有恶言相向,某些还因此要打你。 你做错了吗? ————《帐前卒的寓言》

    GitChat 作者:帐前卒

    引子

    遇到一个陌生人,只看到他沾满泥土的鞋子。

    夏日地铁里,闻到了周围人的汗臭。

    朋友聚会,似乎有些人眼屎没擦干净。

    初次相亲见面,就一直在说对方不好看。

    你看到别人的种种不足,当面指出来,为什么没有人感谢你?

    不光没有人感谢,似乎还有人恶言相向,某些人还因此要打你。

    你做错了吗?

    ————《帐前卒的寓言》

    enter image description here

    Code Review作为编码社会活动,一直被人诟病。每个人似乎都知道Code Review好,但是推广起来却有种种困难。而“用IDE编程”这事似乎根本就不用推广。这到底是为什么?因为Code Review中不可避免要指出别人的代码不足。我们也经常会遇到:

    • 评价/建议后,编码者却不修改;

    • 总是同一种错误,一犯再犯;

    • 抵制你的评价意见,寻求他人再次Review。

    我们review别人的代码,不是专门为代码点赞,那是“鼓励师”要做的事情。我们主要是指出别人的代码哪里写的不好。我想,即使是最和善、最理智的程序员也肯定不喜欢那些评论。即便如此,我们还是要评论,要让别人接受我们的观点。不过为了让别人乐于接受,肯定要有恰当的鼓励。另外,在评论别人的代码之前,我们最好知道是谁写的代码。如果是匿名的,当然可以肆无忌惮的评论。但Code Review是一种非匿名的社交活动:我们都知道编码者是谁,编码者也知道评价者是谁。与说话的技巧一样:“对什么人,说什么话”。所以我们首先需要了解编码者。

    读代码识人心

    比鬼神更可怕的,是人心。

    ————《盗墓笔记》

    读懂人心,实在是太难了。通过代码去读懂人心,那就更难了。如果和编码者经常在一起,性格喜好自然能略知一二。如果你从来没有接触过编码者,只看代码能了解什么呢?我们无法从代码中看出那人的血型、星座、爱好;也难看出勇敢、乐观、顽强、抑郁或悲伤;更看不出他是表现型、分析性还是实干型。当然以上那些性格特点对我们评价代码也没有什么卵用。从代码中读懂人心,只需关注三个方面:

    • 是否认真编码

    • 是否对技术有激情

    • 编码水平怎么样

    为什么只关注这三个方面?认真的编码者对细节格外关心,指明他代码细节的缺陷,他的技术水平一定会有提升。有激情的编码者一定会迫不及待的使用新的技术、新的语法、新的组件。应该告诉他们这些新的技术、语法、组件在代码里用的是否恰当。高水平的编码者乐于提高自己的编程技巧,也喜欢破坏现有的规则,他们看重的只有逻辑错误和运行时问题。Review时,投其所好,才能让编码者信任你,然后才可能接受你的建议。如果编码者编码不认真、技术没激情、水平也不咋样,请问该怎么办?这我们后面会说。

    认真的编码者

    编码者是否想到你所想到的细节,是否还考虑了你没有想到的点?是否遵循了code style规范中每一条细节?是否考虑了边界情况?在特殊处理的地方,有没有写详细的注释?当他看到你的评论时,不管同意与否,他是否每一条都认真回复了。

    有激情的编码者

    编码者是否尝试了新的技术:新的组件、新的语法糖?是否愿意解决一些别人不碰的难题?不那么美观的代码是否充满了不断尝试的味道?是否规避了存在问题的第三方组件?是否尝试写过一些公用组件?是否对旧的问题有新的思路?

    高水平的编码者

    编码水平有优劣,但这个优劣大多数只存在于人的内心。有时候你看了一眼别人的代码,你心里想:“这段代码能写的更简单,更容易。” 所以优劣大多是和自己比较的:技术比自己好,还是比自己差。如果你熟悉整个团队,那么你就能知道这个人的编码水平大概处于整个团队的什么位置。

    但是编码者提交的代码量太少,或者大多是log/print/bean,无法了解他这三个方面的特质,那就用comments多交流几次。

    书写评论

    enter image description here

    初识,最好多点赞,并建议如何编码。如果对方是新入职的人员, 最好一次性的指出程序要修改的地方。一是他有时间修改;二是新人需要了解公司里的编码规范;三是提升他的编码水平。

    在review的过程中不要否定新技术,也不要轻易肯定新技术,适用才是评判依据。为什么使用这些新技术?是旧的写起来麻烦,还是旧的无法满足需求,还是只为尝鲜?对于调研团队,我们鼓励使用各种新的技术。不管是挖坑还是填坑,需要通过他们的使用情况,了解多种新技术的功能特性、成熟度、性能优劣和适用条件。对于功能交付团队,不管是上线还是开发软件给客户使用,能满足需求的同时,一定要为了稳定不折腾。否则后期就会被bug所累,疲于奔命。

    表达相同意思的一段文字可以有不同的写法。工作要有乐趣,不要评论千篇一律、枯燥乏味。下面我要说几种评论的风格:

    • 吐槽。针对熟识的同事或者针对技术水平很高的人。幽默风趣,又让人容易接受。

    • 委婉建议。针对有激情的人,不应该抹杀别人的技术追求。多以疑问句为主,让其自己反思。

    • 批评。针对多次犯同一错误的新人。他们犯的错误一般都是非常容易改正,例如,多写常量定义、使用linux换行符、打印不用System.out等等。有时用感叹句让批评的语气再严厉一点,否则下次新人还会犯同样的错误。

    • 直白陈述。可能大多数评论采用的是这种句式。另外针对编码“得过且过”的老码农,你可能需要多写点:除了点明问题所在, 还应该建议他怎样去修改代码。这样可以减少他的返工次数,消减他的抵触情绪。

    • 讥讽。除非是你的好基友,否则不要用,不要用,不要用,说三遍,不要树敌。

    当面交流

    enter image description here

    既然当面交流,不妨听听编码者怎么看待你的评论。不要一言不合就暴跳如雷,要问问他想怎么修改,或者为什么不想修改。

    出发点还是“利”字。但是受益者可能不同的:是编码者得利,还是团队得利,还是公司得利。这就要看你的三寸不烂之舌,如何既讨人欢心又让人听你指示。程序员这群理智的动物,有时最看不惯的就是阿谀奉承。大家都是靠技术混饭吃的,虽然糖衣炮弹固然重要,但更重要的是言明利弊。

    有些人即使你心平气和的交流,仍然不愿意修改他们的代码,这时候就要关注问题的边界。如果在容忍的边界里,或者对建议置之不理,或者允许开发者以后再修改。如果是边界之外,就应该据理力争。那边界究竟是怎样划定的呢?我写在下面:

    • 代码中存在bug。bug会导致各种错误,有些会导致数据错乱、文件错乱等难以修复的问题。

    • 代码难以理解,日后难维护。当然如果写这代码的人永不离职,自己维护尚可。可人要是离职了,还要看后继者是否愿意担风险去重构这些代码。

    • 长时间运行有问题。那多久会出问题呢?看多久再次部署,如果每天都部署一次,两天就算长时间了。但是为了让团队每个人都休息好、有自己的假期、以及不在休假时被打扰,还是尽量考虑长远一点。如果你最长假期有10天,那至少要考虑软件运行大半个月没问题。

    • 数据量大、访问量大时,代码运行缓慢或者宕机。如果估算运行部署几天后数据/访问量就会到达这个规模,那一定要尽早修改代码。

    • 改动后将大量节省他人的时间。如果将代码抽取为模块或者组件后,有更大的收益。特别是他人即将开始这部分工作时,一定要尽快的抽取出相关代码。不抽取的话,一是别人也要写相关代码;二是一旦有修改,相同功能的代码都会修改;三是即使后期再抽取了组件,也没人愿意重构。

    我们都是执着的技术人,我们心中自有不可逾越的底线,我们也希望所有的编码者不要越过这条底线。我们把这底线告诉给编码者,这也是Code Review中评审者的义务。但建议也写了,见面也谈过了,编码者和审阅者两方就是各不相让。那没有其他办法,只能通过公司里的人事关系去解决:

    • 如果是你的下属,都已经讲明白道理,还是不执行,那是这个下属不称职。

    • 如果是你的上级,你已经告知了他风险,他觉得你的建议没有道理,那就请他说出自己的道理。当然你觉得是他是一个傻X领导,拍拍屁股走人就是;但如果你越职言事,那就是大忌了。

    • 如果是你的平级,告知他上级代码的风险,之后就交给他的上级处理吧。

    当然你需要知道,为了权衡:有时为了紧急上线,有时为了更大的利,即使逾越了你的底线,也要先把代码merge了再说。

    Code Review是为了什么?最终是为了获利。在公司,什么都不考虑,只为把代码写的完美无缺,那才是真的傻。


    实录:《帐前卒:代码如何评价实战解析》


    彩蛋

    【招募】

    我们 GitChat 经过半年的运营,在产品形态上不断改进。

    这次,我们将系统性的优化 GitChat 一些内容,在原有 Chat 基础上推出新的内容分享产品: GitQ 精品课程

    如果您在 IT技术上有自己独到的学习心得 或 自成体系的技术成长套路,我们非常期待您能在 GitQ 上进一步实现:

    GitQ 定位:具备专业性、成体系的IT类课程

    GitQ 形态:独家文章(6~12篇)+读者圈答疑

    GitQ 定价:9.99 / 19.99 等

    【作者如何开设 GitQ 精品课?】
    1. 提交如下内容:课程名称 / 用户定位 / 课程大纲
    2. GitChat 进行内容评估与课程策划
    3. 双方确定课程细节、交付时间
    4. GitChat 完成课程的上线、宣传推广

    【作者注意事项】
    1. GitQ 精品课内的文章,在课程上线一年内属于 GitChat 独家使用。
    2. 按约定时间准时交付文章。
    3. 课程上线后,积极在读者圈回答用户的提问。

    【更多咨询】
    可在文末留言,或加微信联系 GitChat 主编:ztx415

    这里写图片描述

    展开全文
  • 京东批量一键评价代码

    千次阅读 2018-02-01 15:36:13
    1.打开京东评价地址(必须这个...2.使用谷歌 360等可以F12 审查元素的浏览器 打开console 输入黏贴一下代码 var content = 'xxxxxx这两个双引号中间的这些x和汉子替换成自己要评价的内容xxxxxx'; function a(){var

    1.打开京东评价地址(必须这个评价地址)

    http://club.jd.com/myJdcomments/myJdcomments.action

    2.使用谷歌 360等可以F12 审查元素的浏览器 打开console 输入黏贴一下代码

    var content = 'xxxxxx这两个双引号中间的这些x和汉子替换成自己要评价的内容xxxxxx';  
    function a(){var close=document.getElementsByClassName('btn-9 fail-close');if(close.length>0){close[0].click()}var assess=document.getElementsByClassName('btn-9')[0];if(assess!=null){for(var i=0;i<2;i++){assess.click();var area=document.getElementsByClassName('area area01')[0];area.value=content;area.setAttribute('id','id'+0);$('#id'+0).blur();var star=document.getElementsByClassName('star4')[0];star.click()}var submit=document.getElementsByClassName('btn-5 mr10 setcomment')[0];submit.click();setTimeout('a()',5000)}};a();  
    重要的事情说三遍!!!!  
     代码第一行 一定记得要替换啊!!!
     代码第一行 一定记得要替换啊!!!
     代码第一行 一定记得要替换啊!!! 如果实在不知道替换什么 用下面这段话吧。~~



    这是我从别人那边复制过来的,他懒得写了,但这也是我想表达的意思。他为什么喜欢在京东买东西,因为今天买明天就可以送到。他为什么每个商品的评价都一样,因为在京东买的东西太多太多了,导致积累了很多未评价的订单,所以他统一用段话作为评价内容。京东购物这么久,有买到很好的产品,也有买到比较坑的产品,如果我用他的这段话来评价,说明这款产品没问题,至少85分以上,而比较垃圾的产品,我也不会偷懒到复制粘贴他的评价,那我绝对会用心的差评,这样其他消费者在购买的时候会作为参考,会影响该商品销量,而商家也会因此改进商品质量。



    展开全文
  • 京东批量评价代码

    万次阅读 热门讨论 2016-02-17 11:54:18
     个人偏懒,于是昨天下午研究下了批量研究的代码。中间思路出现个小问题。幸得吧友帮助。 技术篇:  这为技术交流,页面 js 可以跟帖交流。因个人比较喜欢原生dom的js,所以jquery用的就比较
    初始篇:
    

         经常京东买东西,反而懒得评价。久而久之,积攒了上百+的待评价订单,虽然每单只有10豆20豆的奖励不多,但累计下来也是相当可观的数字了。
        个人偏懒,于是昨天下午研究下了批量研究的代码。中间思路出现个小问题。
    技术篇:
        这为技术交流,页面 js 可以跟帖交流。因个人比较喜欢原生dom的js,所以jquery用的就比较少。代码略丑,轻喷!
         有好的想法和思路可以跟帖,我继续改进代码 谢谢
         个人思路:  点击评价   点击星星  输入框赋值  提交,循环。
    使用篇:        
        要求谷歌或者360等可用审查元素浏览器,console,粘贴 代码。回车运行。   京东评价地址
    var content = 'xxxxxx这两个双引号中间的这些x和汉子替换成自己要评价的内容xxxxxx';
    function a(){var close=document.getElementsByClassName('btn-9 fail-close');if(close.length>0){close[0].click()}var assess=document.getElementsByClassName('btn-9')[0];if(assess!=null){for(var i=0;i<2;i++){assess.click();var area=document.getElementsByClassName('area area01')[0];area.value=content;area.setAttribute('id','id'+0);$('#id'+0).blur();var star=document.getElementsByClassName('star4')[0];star.click()}var submit=document.getElementsByClassName('btn-5 mr10 setcomment')[0];submit.click();setTimeout('a()',5000)}};a();

    重要的事情说三遍!!!!  
     代码第一行 一定记得要替换啊!!!
     代码第一行 一定记得要替换啊!!!
     代码第一行 一定记得要替换啊!!! 如果实在不知道替换什么 用下面这段话吧。~~



    这是我从别人那边复制过来的,他懒得写了,但这也是我想表达的意思。他为什么喜欢在京东买东西,因为今天买明天就可以送到。他为什么每个商品的评价都一样,因为在京东买的东西太多太多了,导致积累了很多未评价的订单,所以他统一用段话作为评价内容。京东购物这么久,有买到很好的产品,也有买到比较坑的产品,如果我用他的这段话来评价,说明这款产品没问题,至少85分以上,而比较垃圾的产品,我也不会偷懒到复制粘贴他的评价,那我绝对会用心的差评,这样其他消费者在购买的时候会作为参考,会影响该商品销量,而商家也会因此改进商品质量。



    补发:
    京东追加图片批量评价代码:
    var time;
    function a() {
    	var close = document.getElementsByClassName('btn-9');
    	if (close.length > 0) {
    		close[0].click()
    		var imgs = document.getElementsByName('imgs1')[0];
    		if (imgs != null) {
    			imgs.value = "//img30.360buyimg.com/shaidan/jfs/t6565/276/1439852732/41507/d7dc6d5e/59522c69N31c33f50.jpg";
    			var submit = document.getElementsByClassName('btn-5 mr10 setcomment')[0];
    			submit.click();
    			time = setTimeout('a()', 5000)
    		}
    	} else {
    		clearTimeout(time);
    	}
    };
    a();




    展开全文
  • 11种图像清晰度评价函数附MATLAB代码

    万次阅读 多人点赞 2019-06-17 13:33:22
    本科毕业论文是“基于图像处理的自动对焦技术研究”,对焦过程中的一个重要阶段是图像清晰度评价,博主自己用MATLAB实现了4类清晰度评价函数:基于图像梯度的清晰度评价函数、频域评价函数、信息熵评价函数、统计学...
  • GM(1,1)模型预测-案例长江水质评价模型-matlab代码附送
  • 这几天,红警1的开源代码重现江湖,这个20年前,甚至25年前的代码,被我们所有的后来者所惊叹,这才是一个艺术品一般的存在。那么如果我们也想写出如此优美的代码,应该注意的事项有哪些?本文将讲述3个编码时需要...
  • 许多去 Google 参观的,用完洗手间后,都会惊奇而略带羞涩地问:“你们马桶前面的门上,贴着的 Python 编程规范,是用来搞笑的吗?”。搞不搞笑不知道,但是可以看出Google 对编码规范的要求极其严格。今天,我们...
  • 程序员要学会读源代码

    万次阅读 多人点赞 2014-01-25 19:44:57
    我们必须阅读别人代码,因为我们只有理解了那些代码之后才能把我们自己的事情做好。请你不要害怕阅读源代码——不管它看起来有多么可怕,也不管它会把你带向何方,跟它去吧!
  • 写文章的目的是为了让别人理解你的思想,写代码的目的是为了让计算机理解你的思想。同样写一个主题的文章,虽然都语法正确,没有错字,但A君惜墨如金却条理清晰;B君又臭又长但不知所云。 水人和曰: 是啊,...
  • 别人评价我的文字

    2010-04-27 15:17:00
    在hs时候,部门领导说我是润滑剂,可能是如下原因吧:1.因为我刚刚入职不久就接受别人一堆乱码,把乱码改好好;2.然后项目组里面一男一女为了...还是在hs的时候,组长评价我不仅能在网上找到相关代码,还能改动代码,能
  • 代码质量治理

    2020-05-01 16:17:37
    一、什么是代码质量 1.1 定义 作为程序员相信大家或多或少都提过代码质量这个词,那到底什么是代码质量呢?或者说什么是好的代码...由于每个人评价的维度不同,评价的标准也不同,造成这种所谓的“好”和“坏”具有...
  • 反汇编一个类文件 使用反编译器 反编译和对安全的威胁 针锋相对的代码模糊处理 这一领域的新成员 总结 参考资料 关于作者 评价本文 相关内容: 让您的软件运行:模糊安全性 Java 和分布式目标系统上的安全性研究 ...
  • 代码的标准

    2020-07-20 17:31:19
    阅读一段代码时,我们也常会不由自主的评价:“这代码写的不错,或是:“这写的真烂~” 遇到好代码,干活愉快,可以顺利完成任务。遇到烂代码,就非常痛苦了,干活之前,需要先花费很大的精力去理解其中的逻辑 遇到...
  • 5分钟了解《代码整洁之道》精华

    万次阅读 多人点赞 2019-02-27 10:24:24
    大多数只能更多地把精力放在让代码能工作,而没办法保持代码有组织更整洁。能做到代码整洁,说明你已经不是一般了。   本文内容主要分以下几点: 什么样的代码是整洁的 取个好名字 让函数再整洁一点 注释...
  • 1 评价代码质量指标 1.1 健壮性 1.1.1 参数校验 1.1.2 try, catch 1.1.3 控制变量权限 1.2 可扩展性 1.2.1 模块分明 1.2.2 高内聚低耦合 1.2.3 用添加代替更改 1.3可读性 1.3.1 变量命名规范 1.3.2 代码...
  • unet代码实践

    2021-01-11 09:33:55
    1)网上的代码有一些在网络输入位置为inputs=((C,w,h)),但是你在运行的过程中会报一些Tensor的尺寸存在问题的错误,这是因为别人代码是使用了Channel_first,而你的后端的通道格式是Channel_last,所以会出现尺寸...
  • 代码质量提升

    2012-09-03 10:03:46
    如何提高代码质量,相信不仅是在座所有苦恼的事情,也是所有软件项目苦恼的事情。如何提高代码质量呢,我认为我们首先要理解什么是高质量的代码。 高质量代码的三要素 我们评价高质量代码有三要素:可读性、可...
  • 提高代码质量

    2011-07-27 11:00:01
    我们评价高质量代码有三要素:可读性、可维护性、可变更性。我们的代码要一个都不能少地达到了这三要素的要求才能算高质量的代码。1.可读性强 1)不要编写大段的代码(将相对独立的段落另外封装成一个又一个的函数...
  • 来源 |编程新说责编 | Carol头图 | CSDN 下载自视觉中国切身感受在这个世界上,最难看懂的文档,永远是同事写的需求文档。最难看懂的代码,永远是同事写的业务代码。我很纳闷,像...
  • HTML颜色代码大全

    千次阅读 2019-10-21 11:01:28
    非常全面的颜色代码和颜色搭配教程,转自:http://huayi898.blog.163.com/blog/static/25813516200862874336792/ 华艺时空注:        鉴于朋友们(包括我自己)在...
  • 代码评审这点事,元芳你怎么看

    千次阅读 2015-07-26 16:11:42
    百度百科上说:“代码评审也称代码复查,是指通过阅读代码来检查源代码与编码标准的符合性以及代码质量的活动。”这篇百科的内容好像是几年前CSDN上的一篇博文,但不管他们怎么抄,代码评审大概就是这么个意思。 ...
  • 如何提高代码质量

    千次阅读 2016-03-15 11:37:42
    今天这堂培训课讲什么呢?我既不讲Spring,也不讲Hibernate,更不讲Ext,我不讲任何一个具体的技术。... 高质量代码的三要素 我们评价高质量代码有三要素:可读性、可维护性、可变更性。我们的代码
  • 本人计划在2013年撰写《驯服烂代码——代码内在质量的改善之道》一书,恳请各位关注驯服烂代码的朋友审阅下面的写作大纲,看看如何写才能帮到日夜加班奋战在烂代码之中的人们。望不吝赐教,多谢! 内容简介 第...
  • 代码阅读技巧

    2013-09-14 13:07:30
     最近有问我怎么学习源代码?怎么分析开源代码?的确在互联网行业中,采用了很多开放源代码,互联网的发展促进了开源代码的快速发展,在项目开发过程中,为了降低成本和提升项目的质量、开发效率等等,我们的思维...
  • html颜色代码大全

    万次阅读 多人点赞 2018-02-05 15:23:22
    颜色代码:网页颜色代码大全及色彩搭配教程 转载 2018年02月5日 10:31:12 标签:

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 32,167
精华内容 12,866
关键字:

如何评价别人的代码