专栏策划|雅纯
志愿编辑|张晟
软件交付是以代码为中心的交付过程,其中代码的作用有几点:第一,最终的制品要交付成什么样,需要通过代码描述清楚;第二,代码定义了系统和软件是怎样工作的;第三,代码定义了系统的运行环境是怎样的。所有这些都是围绕代码。
那我们的代码管理和软件配置管理应该怎样做呢?
我们先看一个例子。下图是某个团队的代码组织结构,这样的代码组织结构会有什么问题呢?
问题1:代码组的命名方式混乱
我们发现在最上层的目录中叫risk-managenment,这是一个系统,这个系统是风险管理。但是子目录写的是叫“qinglong”,那“qinglong”是应用还是团队,我不知道。然后下面还有一个玄武,下面还有一个aTeam,中英文混杂,这样的命名方式是很混乱的。
问题2:用代码块存储外部二进制文件
在android-sdks里面会存放很多sdk文件,这些文件是很大的,这个代码库存储很多外部二进制文件,我们知道在代码库直接存这样的大文件,对整个代码库的资源消耗是非常大的。
问题3:同一归属的代码保存在不同的代码组
在aTeam目录下有一个data-model,但是其他相关的文件都在玄武下,就是data-console、data-task、data-ui,我们不知道它具体是什么,但是我们知道这几个大概率是同一个应用或者是同一个产品,所以它在两个不同的层级也是不合理的。
问题4:公共库保存在子代码组里
再下一个是common-lib,通过名字来理解就是公共库,但是这个公共感觉只给玄武这个子代码组使用。
问题5:应用的文档(或测试)与应用分开存放
最后还有一个docs目录下有risk-docs和data-docs,一个是针对风险控制的系统,一个是针对数据地系统。那这个里面文档也是一个代码库,文档代码库和测试代码库,它和应用是分开存放的,这也是不合理的。
好的代码库组织形式是怎样的?
问题:假设所有的代码都保存在一个代码库,且所有人均可访问,代码库应该怎么组织&#