1.开发规范-- 常用的版本控制

常用的版本控制

前言

这里版本控制是经过笔者在项目中实践总结得出的,有比较广的适用范围, 当然也要根据不同的业务有取舍应为笔者水平有限,其中有不足的地方也 往大家指出,多多交流

1.对于笔者采用的版本控制的介绍

对于版本控制 我这边是这样做的 两条路线,
1.大版本控制,也就是所谓的通过请求的url进行控制(当然也可以在参数进行大版本控制)
2.小版本控制,通过参数进行细小的版本控制

1.1 大版本控制

对于大版本控制就是所谓的在url里面进行控制,举个例子:

http://api.map.baidu.com/api?v=2.0&ak=您的密钥(百度地图API)
他这里使用的就是参数进行版本控制v=2.0,通过参数的路由指定到不同的项目
如果在请求地址里面进行版本控制就是这样
http://api.map.baidu.com/api/v2.0?ak=您的密钥

在这里比较推荐第二种因为参数控制可以留到更小的版本进行控制,如果是第一种需要在多传递一个版本参数会显得很累赘

一般大版本控制基本上是对第一位和第二位进行控制可以根据业务需求进行取舍

1.2 小版本控制

对于小版本控制存在的意义在于,在一次迭代中接口改动很小但是有个别接口有轻微的逻辑变化,比如:

1.在下一个版本中有一个接口取消了不允许被访问了

2.莫个接口增加或者是删除了几个返回值

3.莫个接口增加了一点点逻辑

例子如下:

http://api.map.baidu.com/api/v2.0?v=2.0.2
http://api.map.baidu.com/api/v2.0?v=2.0.3
比如2.0.2请求的时候需要返回4个参数
而2.0.3只需要返回2个参数
在迭代升级中不需要重新开启一个项目而进行小版本控制会来的更快更好管理

2. 为什么要区分大小版本

先聊聊由什么引出了了大小版本控制,之前笔者在开发一个项目的时候版本迭代基本上是一个星期一次,为了配合端进行了最简单的 版本控制(分文件请求地址的控制)后来发现到后面一次性要维护,3到5个版本而且真正上的逻辑差别都不大,只是为了做到配合端做好 版本控制,后来意识到这种方式在这种快速开发中是不可取得,在后面的了解和探索中发现了大小版本控制比较适合.

接着我们说能真真解决什么问题:

从上面的例子笔者相信大家可以看出,如果有一次升级迭代只拥有大版本控制的项目是不是需要在建立一套项目,当然是肯定的,到后 面的开发中进过的版本迭代越多,需要维护的版本就越来越对,如果有一天很早之前一个接口曝出了BUG那是不是这个版本之后的所有 只要是继承了这个方法的项目都要改,如果都已经上线了进行着一系列修改的风险比较大,应为动刀的项目比较多,能够缩小这一问题 的比较好的方法就是把能兼容的版本尽量的兼容,但是又要做到灵活,那么小版本控制是一个非常好的方法.

3. 在什么时候进行兼容,什么时候切分一个大版本呢?

其实在市面上流行的还有一种做法,一套项目兼容所有版本,大家也可以自己考虑一下这种方法的可行性,当然莫些业务需求会用到, 但在这里并不推荐使用,这样做的问题在于对于一个接口的逻辑在后期会相当复杂难以维护,笔者公司之前交给外包公司做的一个项目 就是采用这种方式,到后面实践下来暴露了很多很多的问题.

在这里笔者也进行了一些梳理,在什么时候进行兼容,在什么时候进行版本切分,可以提供给大家参考参考:

3.1. 对于web后端

对于web端实行同步更新,有且只有一个后端版本存在,与web同时上线迭代更新.

例子:

如现在线上有一套web和后端版本,新的开发任务完成后,线上的版本进行下线, 新的版本进行上线.

3.2. 关于APP后端

对于APP端要区别对待,分别为以下几大点:

1.APP端访问地址形式http://xxxx/项目名称/版本号(两位如:1.0;1.1;)/参数
2.每个接口访问必须带有参数version作为一个版本号传递参数(三位如:1.0.1;1.0.3)
3.无论版本迭代多少次之前版本无特殊情况不允许做任何删除操作
4.在开发中数据库结构,以及代码层面必须对之前版本兼容,不能对历史版本有影响

对于不同的迭代版本采用以下规则进行(兼容)或(区分项目)操作:

以下情况进行兼容操作:(所谓兼容就是多个版本请求同一个地址传递的version不同,代码层面的区分业务逻辑)

1.当下一版本业务逻辑变化不大,单接口无较大修改(所谓较大修改规定为单接口原有工作量的30%)优先选择兼容迭代
2.当下一版本上线周期小于3周或开发周期小于2周时,优先选择兼容迭代
3.当下一版本有新增接口时,优先选择兼容迭代
4.当前一版本未上线,优先选择兼容迭代
5.当兼容版本小于3个,上线版本小于2个,优先选择兼容迭代
6.当满足区分版本中的任意一个条件,必须选择区分版本迭代

以下情况进行区分版本:(所谓区分版本就是调用的链接本质上的不同指向的项目区别对待,项目层面区分业务逻辑)

1.当兼容迭代版本超过3个或线上版本兼容2个,必须是用区分版本升级
2.当下一版本周期大于3周或开发周期大于2周,必须选择区分版本升级
3.当下一版本需求定位有有一定改变或跨度时,应当使用区分版本升级

4. 总结

在这里这篇简短的版本控制说明就到这里,希望大家能从中收获到一些灵感,但是请注意务必根据业务请求结合实际.

时间: 2024-10-27 19:52:57

1.开发规范-- 常用的版本控制的相关文章

简明HTML CSS开发规范

css|规范|开发规范 //总论 本规范既是一个开发规范,也是一个脚本语言参考,本规范并不是一个一成不变的必须严格遵守的条文,特殊情况下要灵活运用,做一定的变通.但是,请大家千万不要随意更改规范.如果有任何问题,请及时与我联系,我会及时更改本规范的相关代码样例和文档. /基 本 要 求 1. 在网站根目录中开设images common temp 三个子目录,根据需要再开设media 子目录,images目录中放不同栏目的页面都要用到的公共图片,例如公司的标志.banner 条.菜单.按钮等等:

简明 HTML CSS 开发规范

css|规范|开发规范 //总论 本规范既是一个开发规范,也是一个脚本语言参考,本规范并不是一个一成不变的必须严格遵守的条文,特殊情况下要灵活运用,做一定的变通.但是,请大家千万不要随意更改规范.如果有任何问题,请及时与我联系,我会及时更改本规范的相关代码样例和文档. /基 本 要 求 1. 在网站根目录中开设images common temp 三个子目录,根据需要再开设media 子目录,images目录中放不同栏目的页面都要用到的公共图片,例如公司的标志.banner 条.菜单.按钮等等:

八一八android开发规范(一种建议)

开发规范重不重要了,不言而喻.这里就给大家说一故事把--据<圣经·旧约·创世记>第11章记载,是当时人类联合起来兴建,希望能通往天堂的高塔.为了阻止人类的计划,上帝让人类说不同的语言,使人类相互之间不能沟通,计划因此失败,人类自此各散东西.此故事试图为世上出现不同语言和种族提供解释.好的开发团队应该是同样的语言,同样的理念,同样的规范去做同一个事情.因此,这里说的开发规范不仅仅在android开发界重要,而且在所有的程序界的重要性也是不言而喻的. 这里说的开发规范分成目录规范,项目和报名的命名

Android开发规范

开发规范制定目的 Android开发规范的制定是为了减少团队协作开发的成本,提高开发和维护的效率,方便自己和他人阅读代码. 一. 概要 1.1类名: 大驼峰 (pascal)命名法:又称大驼峰命名法,所有单词的第一个字母大写 1.2 方法函数: 小驼峰(Camel)命名法:又称小驼峰命名法,除首单词外,其余所有单词的第一个字母大写 1.3 常量: 下划线命名法:单词与单词间用下划线做间隔,全部大写 1.4 代码中一些定义的变量规范: 成员变量:m***(mInitAvtivity) 局部变量:l

iOS开发中常用的数学函数

iOS开发中常用的数学函数   /*---- 常用数学公式 ----*/ //指数运算 3^2 3^3 NSLog(@"结果 %.f", pow(3,2)); //result 9 NSLog(@"结果 %.f", pow(3,3)); //result 27 //开平方运算 NSLog(@"结果 %.f", sqrt(16)); //result 4 NSLog(@"结果 %.f", sqrt(81)); //result

提前认识软件开发(2) 软件开发工程师常用的工具软件

有一次,我打开电视机准备随便看看,无意中被一部战争片吸引住了.成千上万的共产党战士搭起云梯,想攻破一座城池.但是城楼上面的敌人负隅顽抗,拼了命地阻击我军的进攻.双方的伤亡都很惨重,但城就是攻不下来.眼看我军剩下的人不多了,突然不知从什么地方开出一辆坦克,两炮就把城门轰开了.我军趁势攻入城中,将敌人全部歼灭了. 这类电视剧比较常见,相信大家看了不止一次.但是,我看完之后,那个场景还一直留在我的脑海里.成千上万的人不如一辆坦克来得直接,说明了什么问题呢?我立马想到了一句古诗:工欲善其事,必先利其器.

面向对象的css:团队协作开发规范和按结构划分模块

文章简介:面向对象的css有两个主要原则:separate the structure from the skin,separate the container from the content.第一个原则体现在模块化思想可以理解为,模块的设计制作和布局框架本身相分离,意味着你的模块不能只为某个布局而编写样式,像微博这类存在换肤功能的产 说起模块化,也许我们首先想到的是编程中的模块设计,以功能块为单位进行程序设计,最后通过模块的选择和组合构成最终产品.把这种思想运用到页面构建中,也已经不是什么新

China.com网站开发规范(1)

规范|开发规范|开发规范 1数据库使用规范1.1服务器上有关数据库的一切操作只能由服务器管理人员进行.1.2程序中访问数据库时使用统一的用户.统一的连接文件访问数据库.1.3原则上每一个频道只能建一个库,库名与各频道的英文名称相一致,库中再包含若干表.比较大的.重点的栏目可以考虑单独建库,库名与栏目的英文名称相一致.1.4命名:(1) 数据库.表.字段.索引.视图等一系列与数据库相关的名称必须全部使用与内容相关的英文单词命名(尽量避免使用汉语拼音),对于一个单词难以表达的,可以考虑用多个单词加下

asp开发规范

规范|开发规范 asp开发规范 --写这个东西请多多指教,以后开发时好少吃点苦头.</P><P>一.单页编写规范: 切记页面要分模块来写: 第一模块:接收参数.[有可能从不同页面提交到同一个页面:也可能出现两个表单项以哪个优先的处理. 第二模块:定义全局变量. 第三模块:写处理代码(尽量将代码都包含到函数中,详见页面附注一.).--到此asp代码主要部分完成. 第四模块:纯html代码,利用储存在全局变量中的值来生成页面. 第五(注意):要在页面头部写清页面逻辑.(如何接收.处理.