热情高涨

代码走查作为一种流程形式,起初大家的参与热情非常高涨。

因为,自己可以学习到别人一些巧妙的思想,自己的代码和习惯都暴漏出来。

这个过程中不断地吸收和改正。

但是。。。。。。

我们一开始组织的代码走查是一个很重的会议形式。

参加的人有写这段代码的人(小菜)、比较有经验的开发(大佬)

如果为了再隆重一些,请一些领导也参与其中。

但是。。。。。。

我上面提过了,会议很重,协调时间这个事情就是一个很费时间的事情。

还有就是,大家恨不得对每一句代码都发表自己的意见,往往非常的细枝末节。

导致会议时间经常在2小时以上,3小时时间就一般不得不停止。

大家都很累,再就是效果如何呢?

如果小菜自律性不够,甚至没人进行监督,这次的审查的代码不是都会修改。

因为有一些确实太过于鸡蛋挑骨头,根本改不动。

热情褪去

不知不觉中,这种方式慢慢褪去。代码走查成为了一个优先级、频次都不高的活动。

有很多原因,上面说的形式太重是一个,还有就是大家都很忙了,没有进行持续跟进导致效果不佳。

但是。。。。。。

也都知道代码走查对一些新人来说,成长史毋庸置疑的。收获也是毋庸置疑的。

慢慢大家也都放下了。只是每次项目迭代中作为一个硬性要求执行一次罢了。

我们小组里面只有我还有一个刚毕业一年多的女生。

在我们组内的一个项目中,我总是以任务重为由,没有进行代码走查。这个持续了很长时间。

一个字 —— 懒

在处理客户反馈的问题时候,我突然发现,她写的代码确实出现了比较粗心的失误。

我心一想,长达3个月的时间都没有对她的代码进行任何关注。

于她于我于项目,都是极其不好的。我这块做得太自私了。

于是我在gitlab上加上了 【合并请求权限】,逼迫她去仔细思考自己的代码,逼迫我必须去看她写得每一行代码。

合并请求权限

提交合并请求

代码走查

其中有规范、命名、优化、风格、bug

......

收获

是的,这些时间付出是有价值的。是潜移默化的。很多时候我们为了Review一个问题点,讨论20分钟。

一方面深入挖掘她当时的思路:是知识面问题?还是偷懒?还是知道这样后期再优化?

另一方面,也把我的想法和思路进行交流。有几次是我认知就是错误的,通过讨论发现了更好的实践。

其实代码Review真的是一种非常好的实践,我们不能以我们过来的人的眼光看待新人。

他们有他们的优点,当然他们也很可能会犯错。我们使用一点时间,就能把这个问题给找到,对我们对他们都是一件好事。

再加上,代码review也是把团队和部门甚至公司的制度流程以及规范进行一种培训。只是换了一种方式。

至少我觉得我是有收获的,通过几次交流,成员也说明自己确实有收获。

刚刚进入社会,刚刚入行的软件工程师们,不都是自律能力非常强的。都有惰性。

通过这样的形式,让她感知提升,增加自信心,所以后期很多时候她都会把一些好的想法,反过来给反馈给我,我觉得确实是。于是我就偷偷回去改我的代码。

这也是一种沟通渠道,我觉得很多时候软件就是在解决沟通问题。如何让沟通做得有价值,有效率。

有了收获,我依然想进行再一步的精进。找到一本书,能完全肯定我们现在做的事情是一种有价值事情的书籍。

《代码整洁之道》 《重构2》

规定时间里阅读完一章,找出系统中不好的,并按其思想进行修改。或者系统中已经这样做的,找出来分析一下。时间不用很长。

从命名规范、函数分解、同一抽象层次分层、硬编码、效率、类、模块、甚至文件夹构成

为什么要做这些?

首先,我们先不去追踪复杂的效率问题,先解决简单功能实现,后期有人能看懂的问题。

这些实践容易,并且效果明显。有效果,我们就喜欢更深层次提升,再深入提升,就会自然而然晋升到了性能层面。

现在我觉得我和成员的一些讨论都在讨论执行效率。因为代码的命名、分层已经潜移默化养成了习惯。

有了成就感,就有了动力,有了动力,再去研究就会更加主动一些。

我也因此偶尔再总结一下,确实好的代码,令人心旷神怡,赏心悦目。更有读下去的冲动,甚至更有模范的冲动。

K.I.S.S 原则、单一职责、多用组合少用继承、最少知道原则等

很多时候,功能很简单,我们却写得天花乱坠。

我幻想了一下,如果我们的客户他喜欢编程,非要看源代码实现呢?如果他看到源码实现如此简单优美,心中如何感慨?

有时,我也时不时小结一下。

    新人需要我们的指导,才能避免一些弯路;

    我们也需要不断回炉锻造;

    对代码多一些敬畏和欣赏~

敏捷开发:代码Review的更多相关文章

  1. 敏捷开发-代码提交流程& 安装gerrit

  2. 敏捷开发中高质量 Java 代码开发实践

    Java 项目开发过程中,由于开发人员的经验.代码风格各不相同,以及缺乏统一的标准和管理流程,往往导致整个项目的代码质量较差,难于维护,需要较大的测试投入 和周期等问题. 这些问题在一个项目组初建.需 ...

  3. 小谈Scrum敏捷开发流程

    一晃眼,有两年没有写博客了,回顾前两年,各种奔波,各种忙碌,也有不少的收获.从今天开始,我要把这些收获都分享在这里. 其实这两年,对我影响最大的是开发流程.总所周知,一个好的开发流程,对于项目的进行, ...

  4. 敏捷开发方法-Scrum

    为了不落后他人,于是我也开始学习Scrum,今天主要是对我最近阅读的相关资料,根据自己的理解,用自己的话来讲述Scrum中的各个环节,主要目的有两个,一个是进行知识的总结,另外一个是觉得网上很多学习资 ...

  5. 【转】敏捷开发 Scrum 总结

    转:http://www.open-open.com/lib/view/open1330413325514.html 最近把之前学习 Scrum 的资料整理为一篇文档,在接下来的团队和项目开发中,根据 ...

  6. 敏捷开发 与 Scrum

    敏捷开发以用户的需求进化为核心,采用迭代.循序渐进的方法进行软件开发.在敏捷开发中,软件项目在构建初期被切分成多个子项目,各个子项目的成果都经过测试,具备可视.可集成和可运行使用的特征.换言之,就是把 ...

  7. 【转】来自《轻松scrum之旅》的敏捷开发总结

    敏捷开发的核心价值观是,软件开发最重要的是给用户提供有价值的.可以工作的软件.如何保证提供有价值的软件,是通过反馈机制来完成的.这一点,我们体会很深.自从采用敏捷开发以后,我们比以前更有意识地希望得到 ...

  8. 项目的敏捷开发方法(转自MBAlib)

    项目的敏捷开发方法 敏捷方法很多,包括 Scrum.极限编程.功能驱动开发以及统一过程(RUP)等多种法,这些方法本质实际上是一样的,敏捷开发小组主要的工作方式可以归纳为:作为一个整体工作: 按短迭代 ...

  9. 从IT的角度思考BIM(三):敏捷开发

    人们看到了远处BIM的美丽胜景和阻挡在眼前的宽广河流.有些人自信满满地跳入河中打算孤身游过彼岸,可是却失败了.有些人匆匆忙忙地造了船胡乱地滑向彼岸,可是也失败了. 要如何继续这段探索之旅? 无论是&l ...

随机推荐

  1. IDEA使用中文api鼠标提示的设置

    最近都在用IDEA来练习,发现有的方面确实比eclipse好用,eclipse里面可添加中文的API 提示,对初期的我帮助很大,但是IDEA却没有找到添加的地方,一直以来还以为不支持这个功能,比较遗憾 ...

  2. Rikka with Mista 线段树求交点个数

    由于上下线段是不可能有交点的 可以先看左右线段树,按照y递增的顺序,对点进行排序. 升序构造,那么对于从某一点往下的射线,对于L,R进行区间覆盖,线段交点个数就是单点的被覆盖的次数. 降序构造,那么对 ...

  3. apply、call、bind方法调用

    ---恢复内容开始--- 首先这三个方法的作用都是用来改变this的值,而this的值一般有几种情况. 1.函数作为一个对象的一个方法来调用,此时this的值指向对象. var a={ v:0; f: ...

  4. hdu 3790 最短路径问题(迪杰斯特拉)

    最短路径问题 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Subm ...

  5. Project Euler Problem 9-Special Pythagorean triplet

    我是俩循环暴力 看了看给的文档,英语并不好,有点懵,所以找了个中文的博客看了看:勾股数组学习小记.里面有两个学习链接和例题. import math def calc(): for i in rang ...

  6. Nuget 通过 dotnet 命令行发布

    在开发完成一个好用的轮子就想将这个轮子发布到 nuget 让其他小伙伴可以来使用,但是 nuget.org 的登陆速度太慢,本文介绍一个命令行发布的方法,通过命令行发布的方法可以配合 Jenkins ...

  7. python类中的双下划线方法

    __getitem__,__setitem__和__delitem__ 实现了对象属性的字典化操作. class Person: def __init__(self, name, age, hobby ...

  8. Chrome 里的请求报错 " Provisional headers are shown"

    之所以会出现这个警告,是因为去获取该资源的请求其实并(还)没有真的发生; 背景:提交表单,按钮点击<button>标签,触发事件,ajax发送请求,服务器返回信息; <button& ...

  9. Codeforces Round #564 (Div. 2)

    传送门 参考资料 [1]: the Chinese Editoria A. Nauuo and Votes •题意 x个人投赞同票,y人投反对票,z人不确定: 这 z 个人由你来决定是投赞同票还是反对 ...

  10. H3C 路由度量值(Metric)