热情高涨

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

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

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

但是。。。。。。

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

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

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

但是。。。。。。

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

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

导致会议时间经常在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. Jmeter xpath处理器

  2. SDUT-3332&3333_数据结构实验之栈与队列五:下一较大值

    数据结构实验之栈与队列六:下一较大值 Time Limit: 150 ms Memory Limit: 8000 KiB Problem Description 对于包含n(1<=n<=1 ...

  3. 让 AE 输出 MPEG

    最近在做视频后期处理,但是我发现 AE 的文件都很大,大概一个 10 分钟视频 10G ,所以有什么办法让他输出的文件变小?一个方法是使用 MPEG 输出. 本文告诉大家如何让 AE 输出 MPEG ...

  4. PHP实现购物车的思路和源码分析

    正文内容 这里主要是记录下自己的购物车的思路,具体功能实现,但是尚未在实际项目中用到,不对之处欢迎指正 项目中需要添加购物车. 目录说明 buy.php 点击购买之后的操作 car.php 购物车,显 ...

  5. H3C 帧中继与水平分割

  6. Linux中ifcfg-eth0配置参数说明

    ifcfg-eth0在/etc/sysconfig/network-scripts下, 其配置如下: DEVICE=物理设备名IPADDR=IP地址NETMASK=掩码值NETWORK=网络地址BRO ...

  7. 理解java面向对象基础

    1. 类和对象 一切皆对象,这可以说是面向对象的核心思想了. 类,就是具有相同性质对象的抽象. 而类的每一个具体的实例就是一个对象. 我们可以定义一个Person类,这个Person类就是所有的人的抽 ...

  8. Scrap简介

    原文:https://blog.csdn.net/ssw_1990/article/details/51254227 提到Python与网络爬虫,可能会想到urllib,urllib2,Beautif ...

  9. httpClient Post例子,Http 四种请求访问代码 HttpGet HttpPost HttpPut HttpDelete

    httpclient post方法 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 //----1. HttpPost request = new HttpPost(ur ...

  10. 140种Python标准库、第三方库和外部工具

    导读:Python数据工具箱涵盖从数据源到数据可视化的完整流程中涉及到的常用库.函数和外部工具.其中既有Python内置函数和标准库,又有第三方库和工具. 这些库可用于文件读写.网络抓取和解析.数据连 ...