提高团队代码质量

近期看到一篇博客。大致的意思就是网管将原本混乱不堪的交换机整理整齐了,起初交换机是图2那样的,由于越来用的人越多,操作的人越来越多。终于成为了图1那个样子。这不禁让我想到了项目中的代码。原先在刚上线的时候谈不上是完美的,但它总归是整齐的。可是由于中间人员流动,bug改动等等原因吧,终于的结果就是代码一团糟。为什么会出现这种情况呢?

          

图1                                            图2

权限(权利)

拿交换机来说,当自己的网络不通畅的时候自己能够随便进出机房对交换机进行操作,插拔自己的网线的时候仅仅要能让自己的网络通常,那么网线乱一些那又有什么关系呢?第一个人是这样想的同一时候也是这样做的,紧接着第二个、第三个……久而久之就成了图1的样子,混乱不堪。

同理代码也是一个道理。自己须要实现一个功能,在原来代码的基础上进行改动,仅仅要自己的功能好使代码之间的耦合大一些又有什么关系呢?刚入职的第一个新人是这么想的也是这么做的紧接着第二个、第三个……久而久之仓库中的代码就变成了如今的这个样子。慘不忍睹。

没有权限的人能够操作本不该操作的东西,终于一定会一团糟。由于的人们在自己焦头烂额的时候才顾不上会不会影响他人,尽快将自己手头的棘手的问题解决掉才是重中之重。

对于权限管理最经典的一句话就是:权限越低犯错的机会就越少

所以新人直接提交代码到代码库是欠妥的。

责任

出现这种情况是由于大家仅仅关心自己的一亩三分地。“各扫自家门前雪。休管他人瓦上霜”是每一个人的不变信念,问题是“他人”并非别人,是自己人。他人“瓦上霜”事实上就是以后自己的“门前雪”。

事实上责任这个词就是自私的放大版。胸怀有多宽广责任就有多重大。

记得读过一篇关于代码质量的文章,当中说到一个理论叫破窗理论:一个房子假设窗户破了,没有人去修补,隔不久。其他的窗户也会莫名其妙地被人打破。一面墙。假设出现一些涂鸦没有被清洗掉。非常快的,墙上就布满了乱七八糟、不堪入目的东西;一个非常干净的地方,人们不好意思丢垃圾。可是一旦地上有垃圾出现之后。人就会毫不犹豫地抛,丝毫不觉惭愧。

非常多情况下代码晦涩难懂并非一下子就变成这个样子的。冰冻三尺非一日之寒。

从第一个不负责任的人開始代码变得越来越难以维护。假设在提交代码之前有人(几个人)去review要提交的代码,相信出现故障的可能性就大大减小。试想自己的代码是要被全世界程序猿读的,相信你会提高自己的代码质量。

行动

发生了这种事情,终于是要解决的,假设希望永远不发生这种事情。这是一种理想状态,仅仅有说前面的工作我们尽可能的做好来减少这种事情出现的概率。

可是。一旦发现了问题还是须要解决的。并且是立马解决。否则错误会随着时间的推移解决成本也就越来越大。不要借口说如今没时间,等有时间了怎样怎样吧。如今没时间以后更没时间,由于以后仅仅会比方今更忙。

(什么?项目紧没时间,那么请跳槽,对于一个没有规划急功近利的公司是须要被社会淘汰的,所以你的不离职就是在姑息整个软件行业的不良风气)

Review初期是能够避免非常多低级错误的,可是到了后期就流于形式了,由于一直负责review的负责人已经疲惫了。

况且非常多严重的bug并非review就能发现的,Review仅仅能找出显而易见的错误。

所以,

第一、负责review代码的人决不能固定,并且一份代码能够多人review

第二、不放过不论什么一个Bug,尤其是由于改动或者新用例带来的bug。这些bug后面就藏着不整洁的代码,须要整个团队耐心的将其挖掘出来解决掉。


 

都说高质量的代码须要高水平的开发人成员,事实上高质量的代码,需要的是关怀开发商

版权声明:本文博客原创文章,博客,未经同意,不得转载。

转载于:https://www.cnblogs.com/zfyouxi/p/4621776.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/273145.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

webrender 查看是否开启_想要体验极致顺滑的网页加载体验?手动开启Firefox WebRender渲染引擎...

昨天我们提到火狐浏览器最新稳定版Mozilla Firefox v67 版将面向部分用户开启WebRender渲染引擎测试。据火狐浏览器团队介绍当用户开启新的渲染引擎后 , 网页加载帧率能够从现有的 20FPS 直接提升到 60FPS。不过新的渲染引擎本身并不是用于加快网页的加载速度,而是…

NOIP201307货车运输

试题描述A 国有n座城市,编号从1到n,城市之间有m条双向道路。每一条道路对车辆都有重量限制,简称限重。现在有q辆货车在运输货物,司机们想知道每辆车在不超过车辆限重的情况下,最多能运多重的货物。输入第一行有两个用一…

knime如何连接mysql_knime怎么连接MySQL?

首先判断一下网络是否通:如果在局域网相同网段内那网络是通的,不同网段间需要看是否有做隔离,如果没有隔离,那就也是通的。测试方法可以用telnet 数据库IP 数据库端口号的方式探测一下 例如 telnet 192.168. 1.124 3306创建用户&a…

Asp.net Vnext IValueProvider

概述 本文已经同步到《Asp.net Vnext 系列教程 》中] IValueProvider 根据ValueProvider获取数据&#xff0c;在对数据进行绑定 代码实现 private class CustomValueProvider : IValueProvider{//判断否具有指定的前缀public Task<bool> ContainsPrefixAsync(string pref…

ECNUOJ 2615 会议安排

会议安排 Time Limit:1000MS Memory Limit:65536KBTotal Submit:451 Accepted:102 Description 科研人员与相关领域的国内外同行进行适时的接触与充分的交流&#xff0c;对于促进提高他们的科研业务水平&#xff0c;并及时掌握科研动态是十分必要而且重要的。ECNU为了走在科技…

Kafka架构设计:分布式发布订阅消息系统

【http://www.oschina.net/translate/kafka-design】&#xff08;较长&#xff1a;很详细的讲解&#xff09; 【我们为什么要搭建该系统】用作LinkedIn的活动流&#xff08;activity stream&#xff09;和运营数据处理管道&#xff08;pipeline&#xff09;的基础。作为多种类型…

拼团php开发逻辑思维罗振宇_2019罗胖罗振宇跨年演讲手动整理稿,看了两遍

2019罗胖罗振宇跨年演讲看了两遍&#xff0c;手动整理文档1.岁月不饶人&#xff0c;我们也没饶了岁月2.你有你的计划&#xff0c;原来这个世界另有计划&#xff0c;既然这个世界另有计划&#xff0c;我们就得重做计划3.做事的人和不做事的人4.宏观是我们必须忍受的&#xff0c;…

URLConnection

转载&#xff08;http://www.cnblogs.com/shyang--TechBlogs/archive/2011/03/21/1990525.html&#xff09; 关于URLConnection&#xff0c;网上很多回答都是对API的翻译&#xff0c;很崩溃&#xff0c;我是看了很多之后&#xff0c;然后看API才发现的。此后我会吸取教训&#…

java文件拷贝_Java实现文件拷贝的4种方法

第一种方法:古老的方式public static long forJava(File f1,File f2) throws Exception{long timenew Date().getTime();int length2097152;FileInputStream innew FileInputStream(f1);FileOutputStream outnew FileOutputStream(f2);byte[] buffernew byte[length];while(tru…

今夜的硬件之旅

6脚继电器&#xff1a; 汇科继电器HK4100F-DC6V-SHG ①3A触点切换能力 ②具有一组常开&#xff0c;一组转换触点形式 ③超小型&#xff0c;标准印刷制版引出脚 ④有塑封型 Outline&#xff08;L*W*H&#xff09;外形尺寸&#xff1a;15.510.511.8 Contact Date触电形式&#…

mp3 pcm java_Java mp3文件转pcm文件

Java mp3文件转pcm文件package cn.zpy.util;import java.io.File;import java.io.IOException;import javax.sound.sampled.AudioFileFormat;import javax.sound.sampled.AudioFormat;import javax.sound.sampled.AudioInputStream;import javax.sound.sampled.AudioSystem;imp…

有1~5000一组乱序数列,请使用伪代码对该数进行排列

先把1-5000组成一个数组 冒泡排序法 $arrarray(1,2,3,4,5,6,7,8,9.....5000); $totalcount($arr); For($i0;$i<$total;$i){ For($j0;$j<$total-1;$j){ If($arr[$j]>$arr[$j1]){ $tmp$arr[$i]; $arr[$j]$arr[$j1]; $arr[$j1]$tmp; } } } 快速排序法 $arrarray(1,2,3,4,…

java 类型转换方法_java数据类型转换的常见方法

public class Testfun {public static void main(String[] args) {// (一)跨Number父类的类型转换// 1、str转int > Integer.parseInt(s1)String s1 "19";int i2 Integer.parseInt(s1);// 数字str转化为对标的intSystem.out.println("i2" (i2));// 2…

json to java 在线_Json转Java对象 (全网最简版)

Json2Java(全网最简版)json字符串转Java对象,生成对应文件描述&特点简易的Json转Java工具,满足基本日常使用(特殊需求可自行增添,代码就一页)在网上找了好些个这类工具,不是只暴露iead插件就是复杂&没文档,于是自己写了个全网最简版Json2Javaonly one file用法public c…

Material design 色彩

八月已过去&#xff0c;九月刚来到~暑假已过去~九月上学季~~又迎来了一个桂花飘香的季节&#xff0c;你是否有了新的目标和计划~~所以在九月初始给大家带来一个全新的东西&#xff08;ps&#xff1a;对于我来说是全新的东西&#xff09;——Material Design~~九月让我们一起好好…

java logging api_Java Logging API - Tutorial

1.2. 创建一个logger包 java.util.logging提供了日志的功能&#xff0c;可以使用类似于下面的代码来创建一个logger&#xff1a;import java.util.logging.Logger;private final static Logger LOGGER Logger.getLogger(MyClass.class .getName());1.3. LevelLog的等级反映了问…

内存查看工具RAMMAP说明

参考 Technet Process Private: 分配给单一Process专用的内存 Mapped File: 用来储放档案内容快取(Cache)的内存空间 Shared Memory: 标注给多个Process共用的内存分页(Page&#xff0c;内存管理单位) Page Table: 用来描述虚拟内存位址的分页表(裡面是一笔一笔的PTE&…

php接口和java接口_java和php接口的区别是什么

java和php接口的区别是&#xff1a;1、php接口中的抽象方法只能是public的&#xff0c;默认也是public权限&#xff1b;2、java中私有方法使用private修饰&#xff0c;供接口中的默认方法或者静态方法调用。【相关学习推荐&#xff1a;php编程(视频)】php:规范&#xff1a;接口…

成都优步uber司机第四组奖励政策

万能的优步成都团队放出了优步司机第四组&#xff0c;一二三组奖励已经骤降&#xff0c;在月末放出第四组车主档&#xff0c;这是要让一切归于平静的节奏么&#xff01;&#xff01;&#xff01; 滴滴快车单单2.5倍&#xff0c;注册地址&#xff1a;http://www.udache.com/如何…

java hql多条件查询_使用hql语句怎样实现多条件查询

展开全部这里只写了DAO和业务62616964757a686964616fe59b9ee7ad9431333264623331逻辑组件、ACTION的具体实现类&#xff0c;PO和和接口自己应该会写吧&#xff0c;HQL采用的是结合SQL的那种写法&#xff0c;增删改查全在里面了&#xff0c;修改下马上就能跑了&#xff0c;不清楚…