文档章节

三年0故障总结,提升代码质量的秘诀

云栖运营小编
 云栖运营小编
发布于 2016/12/27 14:03
字数 1290
阅读 18
收藏 0

个人经历

对我代码质量影响最大的是在一家外资企业,在这家公司我觉得有以下几个方面做的很不错。

  • 团队编码风格统一
    • 统一到什么程度? 不看代码作者,你很难区分代码是谁写的(在目前公司一些团队也能达到这个标准)。

个人观点:

  1. 这样做有什么好处?团队中每个人阅读代码都很容易,减少很多沟通,维护成本( 代码阅读的次数远远大于变更的次数),并且心情非常愉悦。有人肯定觉得愉悦有点夸张,举个栗子: 有一些代码,如果不是由于与工作内容有关联,你是否有种这辈子都不情愿去接触它的感受。但也有一些代码,阅读下来一气呵成,心情舒畅,促使你有种继续阅读下去的冲动(并且你也会有种不想破坏这种统一的想法).
  2. 基础层面越统一,效率越高(不仅仅是指统一编码规范,还有基本的做事的原则). 举个栗子: 我们团队规定个人周报必须在每周五上班前必须发出来,否则罚款10元。之前团队周报迟发现象比较突出,规则一出,明显改善(开会缺席情况也一样得到明显改善)。罚钱是否不太合理?注释写多少才算合理?与其花大量精力讨论这些不痛不痒的问题,不如及时统一规范(一般制定的规范不会差的),严格执行。后续针对问题即使做调整。关键是统一和严格执行。
  • 代码简洁
    • 能1行解决就不要写2行(不影响可读性的情况下)
    • 多余的代码(比如注释代码 or 无实际意义)必须删除

个人观点: 大家都懂的, 没啥好说的

  • codereview
    • 团队的PLA(团队骨干)进行codereview, 团队中PLA之间的代码质量意识/以及代码规范非常统一.不会出现一个团队,多个标准的情况
    • 每周五周会会对这周代码review出来的问题进行回顾,得出结论。将例子放在wiki上,以供后续遇到类似问题的一个参照。新同学也可参照此内容学习规范,避免犯同类问题。规范中很多内容就是这么累计起来的。

个人观点:

  1. 我在阿里所经历的一个团队中,PLA有3,4位, 分别负责各自的一块业务。PLA之间codereview很少,代码质量的意识交流似乎也不多。但团队的普通开发同学在这些PLA之间轮流被codereview, 代码质量的评比标准差异较大。这可能会导致2种现象:开发倾向review宽松的同学, 因为宽松review发现问题(不仅仅是bug)较少,变动成本不大,不会有改动造成的故障风险,不会影响项目进度(但后续的维护和沟通成本会明显增加);另一种现象, 开发向不同的PLA提出疑义,PLA之间统一代码质量标准,在团队内达成共识并形成文档,以作为后续参考。
  2. 一个团队的代码质量主要取决于团队几位PLA,建议团队早期先统一PLA的代码质量意识和规范。例如: 先由1-2位PLA对整个团队开发做review,这个review工作量初期会很大, 并且团队工作效率不高,但后期的review工作量应该会明显减小, 代码质量也会明显提高, 团队的工作效率也会明显提升.

    我在外企这家公司刚入职的那一个月是我最痛苦的一个月,被codereview感觉很不适应:和以前编码习惯差异较大,review太严格(变量名,空行,注释有单词语法错误也会纠正),感觉限制编码自由.... 1个多月后体会到了明显的好处: 编码bug少; 沟通少,代码和注释已经解决了大部分疑问;阅读代码效率高; 感觉别人写的代码就像是自己写的一样,非常有亲切感.一个多月后, revew我代码的PLA明显放松了对我review的内容,因为他已经很多次没有review出问题,并且让我在每次review前告知需重点review的内容即可。

  3. 阅读全文请点击:http://click.aliyun.com/m/8717/

本文转载自:http://click.aliyun.com/m/8717/

云栖运营小编
粉丝 7
博文 98
码字总数 52676
作品 0
朝阳
运营/编辑
私信 提问
《精益软件度量》-度量质量

指标体系框架-度量质量 1、内部质量 “唯一的现实存于我们的內在。让大多数人生活得如此虚伪和没有价值的原因,是他们错误地把外在形象看作现实,却从不允许內在世界发言。” ——赫尔曼·黑...

通爸
2018/02/27
0
0
报告称开源软件越做越好

专门测试软件完整度(integrity)的Coverity所发布的最新报告显示,开放源码的程序质量的确有在改进。 Coverity Scan是由美国国土安全部(U.S. Department of Homeland Security)在2006年开...

红薯
2009/09/24
324
0
2017年2月18日工作总结

今天主要是开会,内容分为以下几点: 1,鹰路科技的简介及未来三年发展规划的讲解。 2,研发部项目流程管理规范的讲解。 3,研发部代码开发规范的讲解。 4,研发部KPI制度的讲解。 5,研发部...

Mandarava
2017/02/18
1
0
官网CMS改造及UI设计改版

【业务需求】 按甲方要求设计出相应的官网二期规划的功能UI界面。官网CMS部分进行改版。从而达到:1、提高业务处理效率;2、操作界面更加人性化;3、处理流程更加科学合理;4、提高旅客满意...

wing-hwang
2017/09/19
19
2
支付宝杭州、上海、北京诚聘-Java/架构、前端开发/架构、资深测试/架构、开发经理

Java高级开发工程师(杭州/上海) 职位描述: 1. 独立完成小型项目的系统分析、设计,并主导完成详细设计和编码的任务,确保项目的进度和质量; 2. 能够在团队中完成Code Review的任务,确保...

祥祥的Baby
2011/02/22
1K
14

没有更多内容

加载失败,请刷新页面

加载更多

不就是SELECT COUNT语句吗,竟然能被面试官虐的体无完肤

数据库查询相信很多人都不陌生,所有经常有人调侃程序员就是CRUD专员,这所谓的CRUD指的就是数据库的增删改查。 在数据库的增删改查操作中,使用最频繁的就是查询操作。而在所有查询操作中,...

HollisChuang
16分钟前
3
0
乐观锁和悲观锁

乐观锁和悲观锁 在并发环境下,事务的隔离性很难保证,因此会出现很多并发一致性的问题 事务的特性:原子性、一致性、隔离性、持久性 1、丢失修改:T1和T2两个事务对同一个数据进行修改,T1先...

大瑞清_liurq
24分钟前
4
0
Scrum敏捷价值观与原则

Scrum是一种迭代式增量软件开发过程,通常用于敏捷软件开发。如果还不知道Scrum敏捷开发的朋友们,请出门左转,点击 Scrum 了解。 敏捷价值观 个体和互动 高于 流程和工具 工作的软件 高于 ...

醉美閑聖
25分钟前
4
0
android焦点

final RelativeLayout relativeLayout=new RelativeLayout(context); relativeLayout.setClickable(true); relativeLayout.setFocusable(true); rel......

安卓工程师王恒
27分钟前
3
0
IP地址分配与中继设备简介

1. TCP/IP模型 TCP/IP协议是在OSI参考模型出现之间就被开发的,并广泛部署在计算机网络中。但是,后来由于概念混淆,TCP/IP模型的层次和名称往往与OSI模型的层次名称相互借用。如图1.所示。 ...

xiangyunyan
28分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部