一提交代码系统就崩溃? 给你8个避免此尴尬的技巧

当一群人作为一个整体同时进行一个程序的编写时,每个个体都会面临两方面的权衡:

●个人部分的实现——你需要保证你负责的代码部分可以正常运行;

● 整体部分的实现——你需要保证你的代码能和其他人的完美融合。

1、及时增减文件

很多程序员都会有这样的经历:提交了个人代码后,还没歇口气就接收到了build失败的报错信息,或者是来自队友气急败坏的邮件,但很快你就能意识到发生了什么——你在代码库中添加了一个文件,但忘记在其他的地方添加依赖或者做相应的修改。

忘记及时进行文件的增减是一个非常常见的错误,防止这种现象出现的方法之一就是允许源码控制插件自动向源代码控制中添加相应的文件。但工具的操作毕竟存在意外风险,作为一个程序员,每次对文件进行增减操作时还是有义务主动对源代码控制做出相应的修改。

2、编译代码

这是一个老生常谈的问题,但有些时候,程序员确实会直接提交没有编译过的代码。这种默认自己代码没有bug的行为非常危险,因为鲜少有人能在编译修正前真正实现代码的Free bug。当然,这种过分自负的人不多,更常见的是另一种近似行为:有些人仅在提交之前进行相应编译——因为他们相信自己的程序大体上不会存在太大问题。事实上这部分人总会被迅速打脸,且为团队带去各种麻烦。

3、保证不会对他人的代码造成干扰

编译问题本质来说就是不对他人的编程进程造成干扰。但干扰他人编程进度的情况并不仅限于编译问题,还包含对经常调用的方法进行修改等,比如出于一些原因你可能会对临时占位符代码进行修改,但在提交时忘记将相应的操作进行恢复,结果就是你的代码可以正常运行、而其他人却要花大量时间处理无数异常报错。

4、更新注释

注释是存在一定时效性的。当你对一些具有详细注释的代码进行修改,如修复一些bug时,必然会使一些注释内容失效,这种情况下,请务必要对相应的注释进行更新。因为如果依旧使用旧的注释,无论是你自己还是其他在未来会对这些代码进行进一步维护的人,都将有可能因此受扰。

如果真的嫌麻烦,那么即使是简单粗暴的对这部分注释进行删除也比任由失效的注释在那误人子弟来得强。不过,既然他人都愿意花费大量时间进行注释的编写,那么你花一点时间对注释进行修改也无可厚非。

5、删除临时代码

很多时候,这件事都无需被专门注意,特别是对那些所谓的极简代码倡导者而言,毕竟在拥有复杂代码调试器、可使用单元测试对简单代码进行覆盖的情况下,临时代码大多时候并不需要。

但这并不代表所有时候,诚然也确实存在一些情况需要我们使用临时代码来满足一些特殊的调试目的,这个时候,请务必记住在提交前对这些临时代码进行清除,因为这些临时代码不但会给程序带来无用的内存消耗,更可能进一步影响产品的最终性能。

6、进行unit test

无论团队是否有unit test组件,作为一个正常人人,总有那么一两次会在没有进行完整测试情况下提交程。而这种行为的背后是认为上述操作不会对总体造成影响的认知,但实际上,很多时候会被证明过于乐观。

7、进行静态分析

也许静态分析并不适用于所有情况,但很多时候却是非常必须的。目前,很多团队已经例行要求运行静态分析,有些则已将静态分析规则放入build当中。

如果你们的团队在这方面有一定的规章制度、甚至有强制执行的要求时,你甚至会在未编译的部分中进行检查。不过即使没有强制要求,如果你手头有相应的标准,也请保证你的代码在提交前能很好的通过静态分析的检测。

8、尽可能的自动化

为了保证最终整体整合的顺利进行,提交前需要注意大量事项。但如今的世界是一个需要频繁提交的世界,若每次提交前都要按照上述列表逐一确认,无疑能把人逼疯。

因此,尽可能让上述过程自动化,然后认真完成剩下的人工部分。

原文发布于微信公众号 - BestSDK(bestsdk)

原文发表时间:2017-09-30

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏ytkah

测试了小程序的内嵌网页总结几点

  11月2日深夜微信团队宣布小程序内嵌页面开放了,很多开发者已经测试了小程序的内嵌网页,他们总结了以下几点: 1、内嵌网页的域名需要在小程序管理后台设置为业务...

35250
来自专栏battcn

为什么要前后端分离?有什么优缺点?

前后端分离已成为互联网项目开发的业界标准使用方式,通过nginx+tomcat的方式(也可以中间加一个nodejs)有效的进行解耦,并且前后端分离会为以后的大型...

50420
来自专栏Java编程技术

分布式事务- 三阶段协议

前面我们介绍了为解决分布式事务而提出来的的二阶段协议,本文首先来讲解二阶段的不足,然后阐述三阶段协议,三阶段协议也是一个标准的协议,也并没有说具体如何实现。

8020
来自专栏编程

开发一款app从PHP到API接口

一、先简单回答两个问题: 1、PHP 可以开发客户端? 答:不可以,因为PHP是脚本语言,是负责完成 B/S架构 或 C/S架构 的S部分,即:服务端的开发。(...

44290
来自专栏JAVA高级架构

微服务架构下静态数据通用缓存机制

在分布式系统中,特别是最近很火的微服务架构下,有没有或者能不能总结出一个业务静态数据的通用缓存处理机制或方案,这篇文章将结合一些实际的研发经验,尝试理清其中存在...

11820
来自专栏EAWorld

API管理的正确姿势--API Gateway

数字化生态,以创新客户体验为核心,所有我们身边能感知到的变化都来自于渐近的创新。这些创新需要试错,需要不断的升级,并且创新往往与我们熟知的功能分离开来分别呈现。...

50020
来自专栏子勰随笔

SDK开发经验之文档

24480
来自专栏匠心独运的博客

过来人的经验,谈谈一致性处理方案—分布式事务(DTS)

传统事务是使用数据库自身的事务属性(ACID),而数据库自身的事务属性是局限于当前实例,不能实现跨库。而对于大型分布式/微服务集群系统中,不仅存在着跨库的事务,...

47040
来自专栏jerryteng的专栏

如何利用最低配的腾讯云快速搭建高并发在线服务

这里是作为开发用,我们就选择一个普通的服务器,我也是很不好意思的申请了相关的学生机,那我们就用学生机来搭建一个高并发的在线服务。这个机器配置很低,我还进行了降级...

1.1K100
来自专栏皮振伟的专栏

[kvm][qemu]影响虚拟化热迁移的设备

前言 虚拟化场景下,热迁移、HA都会受到部分设备的影响。设备的实现上,包含“透传”、“直通”、“passthrough”,基本上就限制了虚拟机的迁移能力。 作...

54360

扫码关注云+社区

领取腾讯云代金券