为一个软件开发者,你不可避免地需要用到各种工具来设计、理解、编辑任何程序,本文作者按类型总结了10类开发者须知的工具。
免责声明:“最好”的软件工具通常属于主观看法,也许你并不同意我的观点,但是也可以从中获取所需。
1. 版本控制工具
无论你是在100人的团队,还是一个人做设计、开发,版本控制工具都能让你从中获益。
通过版本控制工具,你可以保留同一文件中在不同时期的版本,这对图表和二进制文件都适用,尤其适合文本类型文件。
主流版本控制工具可以分为两种:集中式和分布式。集中式版本控制工具需要一个服务器存储仓库,你可以在合适的时候把代码提交到服务器上。而分布式版本控制工具(DVCS)则不需要中心服务器:每个仓库的使用者都有自己的本地缓存,将更新从一个本地仓库传递到另一个的过程非常简单只需要从源系统push或者从目标系统pull即可。
目前最流行的开源版本控制工具要数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. 数值分析工具
除非你打算做一些及其简单的项目,或者为嵌入式系统进行逻辑编程,你常常会需要对数据有一个直观地了解——图表、或者曲线图,又或者仅仅想要解一个方程,这时候你会需要数据分析工具,比如MATLAB、Mathematica、MathCAD,它们都非免费,甚至价格昂贵,但是价格强大。
如果你的需求简单,SciLab、Octave、PyLab这些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之后也不再集成它。我个人更喜欢PuTTYtel和TeraTermPro。其它通信工具如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用户可以下载相应的二进制文件。
其它,诸如7zip、CPU-Z、System Explorer之类的软件虽然没有放在这个列表中,但也都是非常实用的工具。
原文链接:EmbeddedRelated.com
相关推荐
也许你会认为将毅力、直觉、适宜的工具三个组合在一起即可编写出优雅、完美的代码。然而,随之而来的拙劣的部署或另一种功能需求亦或者是沉重的依赖关系会产生不良的迭代更新,等等这些突发状况会摧毁了你最初的梦想...
如果你很幸运,有APPID,那么你就可以在真机上预览,但同时你发送的请求必须是合法域名,而假如你没有APPID,...循环加载JSON数据集合时,如果其中有项是null,在开发工具中加载正常,但是在手机中浏览时显示空白页,并
PDF: : 开发者须知主要omsi软件包的开发人员文档,请参见构建在线文档,请参见进行新的分析,请参见定义和执行工作流程请参见有关OpenMSI数据格式的高级说明,请参见刊物以下出版物中描述了用于存储MSI数据的数据...
开发者须知数据源和版本控制该站点仅包含“官方”(即由WotC发布)数据。 其他任何内容都应添加到自制软件存储库中。 将RAW放在首位。 旨在提供原始数据的1:1副本。 明显的错别字(例如,生物状态块中的数学错误)...
该工具可让您编写Cypher查询并基于该查询实时生成图形。...开发者须知要开始开发,请执行以下步骤git clone https://github.com/dotcs/cypher-graph-editor.git cypher-graph-editorcd cypher-gra
2. **公告与须知**:系统提供了公告栏功能,可以发布景区的最新通知和游客须知。 3. **在线购票**:游客可以通过系统查看购票信息并进行在线购票,方便快捷。 4. **后端管理**:后台管理系统允许工作人员管理票务...
开发者须知 内容 React本机 的iOS 安卓 PostgreSQL 行政 弹性搜索 Craft.io流程 磁盘空间 其他 吉特 杂项 GraphQL 如何检索GraphQL模式 Ruby on Rails 资产 Rails 5中的自定义字体 快取 在测试中禁用缓存 ...
开发者须知 此操作包括测试,整理,验证工作流,发布和版本控制指南。 如果您是新手,也可以进行更简单的介绍。 请参阅 主码 安装依赖项 npm install 运行测试 :check_mark: $ npm test PASS ./index.test.js ...
《Android开发艺术探索》是一本Android进阶类书籍,采用理论、源码和实践相结合的方式来阐述高水准的Android应用开发要点。《Android开发艺术探索》从三个方面来组织内容。第一,介绍Android开发者不容易掌握的一些...
《Android开发艺术探索》是一本Android进阶类书籍,采用理论、源码和实践相结合的方式来阐述高水准的Android应用开发要点。《Android开发艺术探索》从三个方面来组织内容。第一,介绍Android开发者不容易掌握的一些...
在他们的Twitter个人资料中阻止具有特定关键字的任何人。 您可以将其设置为在阻止之前进行确认,也可以只允许其自动阻止。...开发者须知 该扩展是使用创建的! 有关CLI的说明,请参见《 关于 问题与功能要求: 执照:
一 、小程序是什么? 一种介于原生app、和web app的hybrid, 比web app 的开发...开发者工具 开发文档 三 、实现机制 基于微信提供的一套应用框架。微信通过封装微信客户端提供的文件系统、网络通信、任务管理
本书是一本Android进阶类书籍,采用理论、源码和实践相结合的方式来阐述高水准的Android应用开发要点。本书从三个方面来组织内容。第一,介绍Android开发者不容易掌握的一些知识点;第二,结合Android源代码和应用层...
它包含了论文、源代码以及详细的说明文档,旨在帮助研究者、开发者以及学习者快速理解和实现一个高效、准确的旅游推荐系统。该系统利用了机器学习和数据挖掘技术,通过对大量旅游数据的分析和挖掘,为用户提供个性化...
三、使用本工具代码块,可以帮助到你什么 使用须知: 1. 首先本代码块是基于企业业务的封装,具有普遍使用性,涵盖了绝大部分应用场景 2. 适合MongoDB初学者:降低学习成本,底层实现对使用者透明,操作简单,...
4.1 安装和初始化:给出程序的存储形式、操作命令、反馈信息及其做含意、表明安装完成的测试实例以及安装所需的软件工具等。 4.2 输入:给出输入数据或参数的要求。 ● 数据背景:说明数据来源、存储媒体、出现...