开发者需知的10类工具

开发者需知的10类工具

发表于  18小时前|   5687次阅读| 来源  EmbeddedRelated.com|   27 条评论| 做者  Jason Sachs

摘要:做为一个软件开发者,你不可避免地须要用到各类工具来设计、理解、编辑任何程序,本文中按类型总结了10类开发者须知的工具,并各列举了一些知名应用软件。

做为一个软件开发者,你不可避免地须要用到各类工具来设计、理解、编辑任何程序,本文做者按类型总结了10类开发者须知的工具。CSDN摘译以下: html

免责声明:“最好”的软件工具一般属于主观见解,也许你并不一样意个人观点,可是也能够从中获取所需。 java

1. 版本控制工具 git

不管你是在100人的团队,仍是一我的作设计、开发,版本控制工具都能让你从中获益。 程序员

经过版本控制工具,你能够保留同一文件中在不一样时期的版本,这对图表和二进制文件都适用,尤为适合文本类型文件。 macos

主流版本控制工具能够分为两种:集中式和分布式。集中式版本控制工具须要一个服务器存储仓库,你能够在合适的时候把代码提交到服务器上。而分布式版本控制工具(DVCS)则不须要中心服务器:每一个仓库的使用者都有本身的本地缓存,将更新从一个本地仓库传递到另外一个的过程很是简单只须要从源系统push或者从目标系统pull便可。 apache

目前最流行的开源版本控制工具要数Subvision(SVN)、Git以及Mercurial(hg)了,其中SVN是集中式版本控制工具,Git和Mercurial则是分布式的。 编程

值得注意的是,有不少知名网站提供仓库托管服务,好比bitbucket.org、SourceForge、GoogleCode以及Github等等,这些网站都提供免费托管服务,但在具体服务支持与收费上各不相同。 浏览器

2. 文件比较工具 缓存

不管你是想要与版本控制系统合并代码,仍是仅仅想要比较两个文件的不一样,文件比较工具都是很是有用的。其中diff是一个很是有名的命令行比较工具,我也喜欢Beyond Compare这款图形界面比较工具——惋惜它并不是免费,可是并不贵并且简单、强大。除此以外,常见文件比较工具还有SourceGearDiffMerge(免费、跨平台=Windows/OS X/Linux),Compare It!(收费、仅支持Windows),DeltaWalker(较贵、仅支持OSX)以及UltraCompare(较贵、跨平台)。 安全

3. 编辑器

处理文本文件的难以取决于你使用的软件。重量级的编辑器,如Eclipse、NetBeans、Visual Studio都属因而IDE(integrateddevelopment environment,集成开发环境),若是你须要作特定的工做,他们都很是强大。但有时候你仅仅想要简单、快速地编辑文件,系统自带的编辑器(Windows下的Notepad和Machine下的TextEdit)虽然轻量可是不够强大。这里介绍几个中量级的编辑器:Windows平台的Notepad++、Mac平台的TextWrangler都是不错的免费编辑器,还有GNUemacs、Vim这样强大、可扩展的自由软件。

4. 构建工具

若是你使用IDE进行开发,仅仅单击“Build”便可觉得你编译程序的源代码。可是注意:编译软件时经常有不少细节的编译选项,而使用IDE时经常被深藏在复杂的菜单中。我认为,专业的程序员应该使用可定义的构建工具,选择正确的编译选项达到最优效果。

5. 脚本工具

有时候你须要快速整合多个软件以达到某个目的,这时很难选择C或者C++这样须要编译的编程语言,由于它们在执行前须要先编译成可执行的文件。此时,更好的解决方案是脚本语言,它们一般集成在操做系统中,编写一个脚本甚至能够在多台计算机中运行。

常见现代脚本语言有Python、Ruby、Groovy、awk、Perl等等。不论你更喜欢那种,我建议你选择其中一款。我很喜欢Python,不只由于它简单、鼓励好的编程规范,并且拥有强大的调试工具——基于Eclipse的PyDev。借助PyDev,你能够设置断点、并端部执行你的脚本。

6. 数值分析工具

除非你打算作一些及其简单的项目,或者为嵌入式系统进行逻辑编程,你经常会须要对数据有一个直观地了解——图表、或者曲线图,又或者仅仅想要解一个方程,这时候你会须要数据分析工具,好比MATLABMathematicaMathCAD,它们都非免费,甚至价格昂贵,可是价格强大。

若是你的需求简单,SciLabOctavePyLab这些MATLAB的免费“克隆”版本也提供了某些MATLAB的基本功能,语法也与MATLAB相近或相同。其中PyLab用Python实现,若是你懂Python,或许能够将其利用到科学计算领域。

7. 文档工具

工程环境中,你经常须要和他人分享想法,不少软件均可以作到这点,好比使用微软的Visio能够提供流程图、表,Word来编辑文档,PowerPoint来作演示。但它们都非免费,有时候你更须要免费或者更特化的文档工具。

  • 图形可视化工具——我经常使用的是基于命令行的graphviz,以及拥有交互界面的yEd。    
  • 流程图——使用图形表达思路。Quick Sequence Diagram Editor很基本,可是足以帮助你达到绘制这些图形的目的。    
  • 排版工具——你可使用WYSIWYG工具,也能够选择非WYSIWYG软件,又或者TeX、LaTeX,随我的喜爱。    
  • 代码自文档工具——Doxygen很常见,能够将代码中的注释转化成文档,JavaDoc则是转为Java设计的文档工具。    

8. 终端以及通讯工具

有时候你会须要经过串口进行通讯,这时你就须要终端工具了,在Web浏览器出现以前,这更为常见。曾经与Windows绑定的HyperTerminal不够强大,不建议使用,并且微软在Vista以后也再也不集成它。我我的更喜欢PuTTYtelTeraTermPro。其它通讯工具如FTP及其安全变种SFTP、SCP方面我最喜欢Cyberduck,如今支持Mac和Windows。

9. 软件QA(质量保障)工具

对于开发者来讲,为避免bug你确定须要QA工具。我不是很清楚这方面,可是知道大概能够分如下几类:

  • 静态分析工具。它是一种分析软件的工具,既能够分析软件源代码,也能够分析编译后的文件。最出名的莫过于面向C语言的lint,lint会像总是同样在你代码的错误之处标出红线,标出你的错误。Java语言有FindBugs对应,可以帮助衡量代码复杂度——一般好的程序设计函数比较小,若是某个函数超过20-30行代码,你能够考虑将其分解了,这样也更便于设计和调试。    
  • 单元测试和代码覆盖率。大型软件测试一般极难,这是公认的;可是使用“单元测试”测试更小的软件模块却简单得多。可是单元测试一样也有不擅长的领域,好比嵌入式系统,虽然能够经过交叉编译在PC上寻找bug,但并不能保证在嵌入式机器上效果一致。单元测试也有必定的技巧,好比能够编写可重复利用的测试脚本。代码覆盖工具我仅见过同事使用Cantata++,但并不便宜。    
  • 代码“美化器”。若是你和同事使用相同的编码风格,更容易寻找出简单的语法错误。一般咱们都有各自的编程习惯,可是能够经过软件达到统一编程风格的效果——好比自动缩进、tab空格转换等等。我使用过Uncrustify,以及其GUI工具UniversalIndentGU。    

10. 基本命令行工具

虽然GUI对于计算机交互是革命性的改进,但还有不少事用命令行作起来更加简单,好比使用脚本可以轻易组合多个程序。若是你使用OS X或者Linux,那计算机上通常已经预装了UNIX命令行工具,Windows用户能够下载相应的二进制文件

其它,诸如7zipCPU-ZSystem Explorer之类的软件虽然没有放在这个列表中,但也都是很是实用的工具。

相关文章
相关标签/搜索