201873030133-杨子豪 常用源代码管理工具与开发工具
项目 | 内容 |
---|---|
课程班级博客链接 | 班级博客连接 |
这个作业要求链接 | 作业要求链接 |
我的课程学习目标 | 了解软件工程的作用与意义,将软件工程与过去所学相结合 |
这个作业在哪些方面帮助我实现学习目标 | 在调研与试用的过程中,找到适合自己的项目源代码管理工具和项目源代码集成开发软件工具 |
调研源代码版本管理软件
Github
特点
- 分布式版本控制系统,不用联网工作,每个人电脑里都有完整的版本库,安全性高得多。
- 最快最简单也最流行的免费开源管理软件,项目从极小到极大都可以放在github上托管。
- 远程仓库:将项目托管到GitHub的服务器上,不用再担心硬盘丢失的问题
- 使用标签来创建简单易懂的版本号,代替复杂难懂的conmit
项目管理
- 如同RPG游戏一样可以对项目进行随时随地的存档,这也意味着可以进行版本的前进与回退
- 工作区与暂存区,机制是先把提交的修改放到暂存区,再一次性把暂存区所有修改提交到分支
- GitHub管理的是修改而非文件,因此可以撤销修改
团队协作
——团队协作主要依赖于分支管理
- 有了分支,就可以创建属于自己的分支在上面工作,互不干扰,开发完毕后提交分支进行合并
- 如果合并分支时出现冲突,需要先解决冲突后再提交进行合并
- 具体是在master分支上发布新版本,再dev分支上工作,每个人将自己的分支合并到dev分支上
- 除此之外,为了开发新的功能,还会有feature分支
SVN
特点
- 集中式源码管理系统,需要联网工作,版本库集中存放在中央服务器,工作时网速很影响效率
- 同样开源免费,开源社区广泛使用Subversion,诸如Apache软件基金会,Free Pascal
- 支持 tag 选项,通过使用 tag 的概念,可以给某一个具体版本的代码一个更加有意义的名字。
项目管理
- 检出:Checkout 操作是用来从版本库创建一个工作副本。工作副本是开发者私人的工作空间,可以进行内容的修改,然后提交到版本库中。
- 更新:update 操作是用来更新版本库的。这个操作将工作副本与版本库进行同步。由于版本库是由整个团队共用的,当其他人提交了他们的改动之后,你的工作副本就会过期。
- 执行变更:当检出之后,你就可以做很多操作来执行变更。编辑是最常用的操作。你可以编辑已存在的文件,例如进行文件的添加/删除操作。但是这些添加的文件目录不会立刻成为版本库的一部分,而是被添加进待变更列表中,直到执行了 commit 操作后才会成为版本库的一部分。
- 解决冲突:合并的时候可能会发生冲突。Merge 操作会自动处理可以安全合并的东西。其它的会被当做冲突。例如,"hello.c" 文件在一个分支上被修改,在另一个分支上被删除了。这种情况就需要人为处理。Resolve 操作就是用来帮助用户找出冲突并告诉版本库如何处理这些冲突。
- 提交更改(Commit):用来将更改从工作副本到版本库。这个操作会修改版本库的内容。
团队协作
- Commit操作后,版本库的内容就会更新,其他开发者可以通过更新他们的工作副本来查看这些修改。
- 如果两个程序员同时修改了同一个文件, SVN 可以合并这两个程序员的改动,SVN管理源代码是以行为单位的,就是说两个程序员只要不是修改了同一行程序,SVN都会自动合并两种修改。如果是同一行,SVN 会提示文件 Conflict, 冲突,需要手动确认。
- Branch分支选项:类似于Github的分支,创建不同的Branch最后统一合并到trunk上来。
CVS
CVS是最早的开源而且免费的集中式版本控制系统,直到现在还有不少人在用。由于CVS自身设计的问题,会造成提交文件不完整,版本库莫名其妙损坏的情况。同样是开源而且免费的SVN修正了CVS的一些稳定性问题,是目前用得最多的集中式版本库控制系统。
因此不再具体调研CVS,参考SVN即可。
比较GitHub与SVN这两大最流行管理软件的异同
- GitHub的分布式 vs SVN的集中式
- 都是记录文件的修改,允许进行项目版本的时空穿梭
- 都有Branch这个强大的分支选项,但是相比之下,Github的分支更完善更强大
- 都支持标签功能,可以给某一个具体版本的代码一个更加有意义的名字
- 都有一个类似于工作区的机制,SVN的工作副本,Github的暂存区
调研流行源代码集成开发工具软件(IDE)
MyEclipse
优点
- 在Eclipse的基础上集成了很多的插件,基本可以实现java方面的所有开发功能
- 可视化的HTML/JSP/JSF编辑器。
- JSP, Javascripte调试功能
- 良好的XML编辑器。
- 良好的Hibernate集成。
缺点
- UML功能,可用性很不好,没有MDA,一些开源软件都做得比它好。
- 项目粒度过细,做一个ear,至少要做三个项目:ear, war,ejb。
- 图片编辑功能非常无用
- 对eclipse, hibernate, spring等开源软件的新版本支持不及时。
Visual Studio
优点
- 支持多种语言
- 拥有基本上最庞大最全面的类库,使复杂工作变得简单
- 出现BUG的频率比较低,安全性稳定性更高
缺点
- 运行速度慢,庞大的软件显得有些臃肿
- 编程复杂,配置困难,设置代码格式不够灵活,设置文件编码太过麻烦
- 错误信息不够人性化,需要一个一个点开来看
HbuilderX
优点
- 极快速、极轻便、极高效,高效敏捷且功能十分强大
- 流畅无延迟,掌握了技巧后有种越用越快的感觉
- 然体积大启动慢了点,不过拥有完善的功能
缺点
- 项目管理器没有最小化按钮,只能用alt+q控制。新建文件类型少(也许设计如此,用自定义代替)
- 响应速度没有Hbuilder快,有延迟,在鼠标点击的时候会有滞黏感(也许和X体积小,需实时处理数据有关)
- 分栏需要分两步:先分栏,再把文件拖过去。而Hbuilder直接拖就可以。
- Sass编译会报错,提示binding.node缺失(可能受本机安装的nodejs版本影响)
PyCharm
优点
- 编码协助:其提供了一个带编码补全,代码片段,支持代码折叠和分割窗口的智能、可配置的编辑器,可帮助用户更快更轻松的完成编码工作。
- 项目代码导航:该IDE可帮助用户即时从一个文件导航至另一个,从一个方法至其申明或者用法甚至可以穿过类的层次。若用户学会使用其提供的快捷键的话甚至能更快。
- 代码分析:用户可使用其编码语法,错误高亮,智能检测以及一键式代码快速补全建议,使得编码更优化。
- 集成版本控制:登入,录出,视图拆分与合并--所有这些功能都能在其统一的VCS用户界面(可用于Mercurial, Subversion, Git, Perforce 和其他的 SCM)中得到。
缺点
- 重量级,界面不够美观
Android Studio
优点
- 稳定速度快:使用Eclipse的开发人员都会碰到突然假死、卡顿、内存占用高等一系列影响开发效率的老问题,Android Studio在这块性能上得到了明显的提升,并且Android Studio使用了单项目管理模式,在启动速度上比Eclipse快。
- 功能强大的UI编辑器:集合了Eclipse+ADT的优点,并且能更实时的展示界面布局效果。
- 完善的插件管理:Android Studio支持了多种插件,可直接在插件管理中下载所需的插件,。
- 完善的支持多种代码管理工具:不需要任何操作,直接支持SVN、GITHUB等主流的代码管理工具。
- 整合了Gradle构建工具:Gradle继承了Ant的灵活性和Maven的生命周期管理,不适用XML作为配置文件格式,采用了DSL格式,使得脚本更加灵活简洁。
- 智能:智能保存,智能补齐,在实际的编辑代码中熟练使用后,可极大提高代码编写效率。
- 内置终端:不需要自己打开一个终端来使用ADB等工具。
- 谷歌官方支持:是Google官方专门为Android应用开发打造的利器,也是目前Google官方唯一推荐,并且不再支持其他IDE。
NetBeans
优点
- NetBeans对移动开发提供了非常强大的支持,无论是纯Java开发还是Java开发,还是前端技术支持
- 混合移动开发从未像现在的NetBeans那样容易,NetBeans推出了开源移动框架的混合移动开发。 这是开发混合移动应用程序的最流行的框架之一
- NetBeans带有一个内置工具,可让直接从IDE一次获取JavaScript库并在同一位置管理它们的更新,轻松找到几乎所有需要的JavaScript库
IDEA
优点
-
智能的选取。在很多时候我们要选取某个方法,或某个循环或想一步一步从一个变量到整个类慢慢扩充着选取,IDEA就提供这种基于语法的选择,在默认设置中Ctrl+w,可以实现选取范围的不断扩充,这种方式在重构的时候尤其显得方便。
-
丰富的导航模式。IDEA提供了丰富的导航查看模式,例如ctrl+e显示最近打开过的文件,ctrl+n显示你希望显示的类名查找框
该框同样有智能补充功能,当你输入字母后IDEA将显示所有候选类名)。在最基本的project试图中,你还可以选择多种的试图方式。
-
历史记录功能。不用通过版本管理服务器,单纯的IDEA就可以查看任何工程中文件的历史记录,但版本恢复时你可以很容易的将其恢复。
-
JUnit的完美支持。
-
对重构的优越支持。IDEA是所有IDE中最早支持重构的,其优秀的重构能力一直是其主要卖点之一。
-
编码辅助。java规范中提倡的tostring(),hashcode(),equals(),以及所有的get/set方法,你可以不用进行任何的输入就可以实现代码的自动生成,从而把你从无聊的基本方法编码中解放出来。
-
灵活的排版功能。基本所有的IDE都有重排版功能,但仅有IDEA的是人性的,因为她支持排版模式的定制,你可以根据不同的项目要求采用不同的排版方式。
-
XML的完美支持。
-
简洁易用的GUI界面。
-
与文件系统自动同步。当你最小化IDEA,直接对文件进行编辑之后,重新打开IDEA后IDEA将自动的完成文件的更新,而不用重新导入工程或刷新工程。
缺点
- 插件开发匮乏,比起Eclipse,IDEA只能算是个插件的矮子,目前官方公布的插件不足400个,并且许多插件实质性的东西并没有,可能是IDEA本身就太强大了。
- 在同一页面中只支持单工程,这为开发带来一定的不便,特别是喜欢开发时建一个测试过程来测试部分方法的程序员带来心理上的不认同。
- 匮乏的技术文章,目前网络中能找到的技术支持基本没有,技术文章也少之又少。
- 资源消耗比较大,建个大中型的J2EE项目,启动后基本要200M以上的内存支持,包括安装软件在内,差不多要500M的硬盘空间支持。(由于很多智能功能是时时的,因此包括系统类在内的所有类都被IDEA存放到IDEA的工作路径中)。
Code Block
优点
简易快捷,编写简短的代码程序时非常适合
缺点
没有其他IDE那样完美的集成框架,不适合大的项目,并且语言种类单一
撰写任务1、任务2相关内容博客
- 练习使用typora进行MarkDown格式博客的本地编辑和实时预览,编辑完成后复制到博客园中。(博客排版美观5分)
- 博客名称:学号-姓名 常用源代码管理工具与开发工具(2分)
- 博文开头格式:(3分)