-
疑惑:
·源代码管理器是个啥?咋用啊?不同语言用法一样吗?不同开发呢?
·项目管理软件是个啥?咋用啊?
·安卓开发,ios开发的单元测试怎么写?
·什么是重构,什么情况下需要重构?
·每日构建是什么?怎么操作?
·编译要产生Debug|Release两个版本。为什么?
·代码签入?到哪? -
有用的提示:
绝大部分情况下,一个团队所使用的语言,别的团队也一定使用过了;一个团队要解决的问题,别的团队也解决过类似的了。我们可以看看别人是否留下了适合这种语言或问题的编程规范和设计原则。如果是比较成熟的语言,一定会有高质量的文章和著作可以参考。 -
疑惑的解答
-
源代码管理器是个啥?
源代码管理器大概可以理解为,是可以多人管理同一个项目的代码的一个工具,可以轻松管理软件的版本问题。如果没有源代码管理器,开发大型的软件会花费很多时间在代码版本管理上。
源代码管理器可以做到:
能追踪一个项目从诞生一直到定案的过程
记录一个项目的所有内容变化,无限制返回
查看特定版本的修订情况
常用的源代码管理器有:
CVS
- 开启版本控制之门
- 1990年诞生,“远古时代”的主流源代码管理工具
SVN
- 全称是Subversion,集中式版本控制之王者
- 是CVS的接班人,速度比CVS快,功能比CVS多且强大
- 在国内软件企业中使用最为普遍(70%-90%)
GIT
- 一款伟大的分布式源代码管理工具
- 目前被越来越多的开源项目使用
- 不过在国内企业尚未大范围普及
因为想顺便学一下怎么用GitHub,所以我就选择使用GIT。
这里介绍一下Git(摘抄自《GitHub入门与实践》 [日] 大塚弘记 著,支鹏浩,刘斌 译 ):
- 诞生背景
我觉得是废话,略过。 - 什么是版本管理
版本管理就是管理更新的历史记录。他为我们提供了一些在软件开发过程中必不可少的功能,例如记录一款软件添加或更改源代码的过程,回滚到特定阶段,恢复误删除的文件等。 - 集中型与分散型
·集中型
集中型将所有数据集存放在服务器当中,有便于管理的优点。但是一旦开发者所处的环境不能连接服务器,就无法获取最新的源代码,开发也就几乎无法进行。服务器宕机时也是同样的道理,而且万一服务器故障导致数据消失,恐怕开发者就再也见不到最新的源代码了。
·分散性
以Git为代表的。GitHub将仓库Fork给了每一个用户。Fork就是将GitHub的某个特定仓库复制到自己的账户下。Fork出的仓库与原仓库是两个不同的仓库,开发者可以随意编辑。
如图所示,分散型拥有多个仓库,相对而言稍显复杂。不过,由于本地的开发环境中就有仓库,所以开发者不必连接远程仓库就可以进行开发。
图中只显示了一般的使用流程。实际上,所有仓库之间都可以进行push和pull。即使不通过GitHub,开发者A也可以直接向开发者B的仓库进行push或pull。因此在使用前如果不事先制定规范,初学者往往会搞不清楚最新的源代码保存在哪里,导致开发失去控制。
·集中型与分散型哪个更好
双方各有优缺点,但如今随着GitHub的普及,今后使用分散型的开发者将会占绝大多数。只要规则制定的得当,分散型同样能像集中型那样进行管理。