为一个软件开发者,你不可避免地需要用到各种工具来设计、理解、编辑任何程序,本文作者按类型总结了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
相关推荐
综上所述,JLINK V10固件修复工具是开发者解决JLINK V10设备固件问题的重要辅助工具,通过正确使用,可以有效保障JLINK V10的正常工作,提高开发效率。在操作过程中,遵循使用须知和注意事项,可以降低出现问题的...
- **数据查看**:教授开发者如何利用iTunes Connect的数据分析工具来监控应用的表现,包括下载量、收入等关键指标。 - **报告功能**:说明如何生成详细的报告以供进一步分析或分享给团队成员。 ##### 3.5 账户与...
使用该工具,开发者首先需要按照“使用须知.html”文档的指导进行操作,可能包括配置数据库连接信息、选择目标表等步骤。"t_p_contract_d.txt"可能是表结构的示例文件,供用户参考或作为输入。"lib"和"lib_bak"目录...
- **开发环境设置**:为了顺利进行Symbol产品的开发工作,首先需要搭建合适的开发环境,这通常包括但不限于选择合适的操作系统(如Windows CE)、安装必要的开发工具和驱动程序等。 - **API及SDK介绍**:文档可能...
也许你会认为将毅力、直觉、适宜的工具三个组合在一起即可编写出优雅、完美的代码。然而,随之而来的拙劣的部署或另一种功能需求亦或者是沉重的依赖关系会产生不良的迭代更新,等等这些突发状况会摧毁了你最初的梦想...
10. **代码优化**:可能提供了一些性能分析和代码优化的工具或建议。 在实际应用中,开发者可以根据自己的需求,从这个工具箱中选择合适的功能,或者参考其源代码学习和理解PHP编程的最佳实践。在使用过程中,遵循...
5. **使用须知**:在使用这些工具时,玩家需注意版权问题,确保不违反游戏服务条款。一些工具可能被视为外挂,使用不当可能会导致账号被封禁。因此,合理、合法地利用这些工具,是每个玩家应当遵循的原则。 总的来...
"第10章 GDB调试器及调试方法.pdf"最后会介绍GDB,它是Linux下强大的源代码级调试工具。通过学习GDB,开发者可以更有效地定位和修复程序中的错误。 以上就是Linux入门的一些核心知识点,涵盖了从系统安装、基本操作...
这对于开发者进行系统级调试、性能优化或是安全研究来说是非常有价值的。 **使用须知** 在使用Windows桌面工具箱时,用户需具备一定的计算机知识,尤其是关于操作系统、编程和系统安全的理解。不恰当的使用可能...
1. "使用须知.txt":这通常包含关于如何运行或使用该工具的详细步骤和注意事项,可能包括系统要求、安装指南、使用教程等。阅读这份文档是理解和操作这个SEO工具的第一步。 2. "132687501520618881":这是一个看起来...
在实际应用中,这个工具可能由广联达的授权技术人员或开发者使用,他们需要一定的专业知识和权限来操作。对于普通用户来说,一般无需直接接触这个工具,除非遇到加密狗故障或者需要特殊定制的情况。 在提供的文件...
该工具是机智云为开发者提供的一种便利,它能够根据设备的数据点配置,自动为不同的硬件平台生成相应的控制和通信代码。 1.1 什么是“代码自动生成工具” 代码自动生成工具是一种自动化编程辅助工具,它可以依据...
在压缩包中,"使用须知.txt" 文件很可能是提供给用户关于如何使用这个工具的指导,包括安装步骤、配置说明、命令行用法或者API调用示例等。而"132687523581856070" 可能是主程序文件或者是压缩后的CSS文件样本,具体...
在Java开发过程中,日志管理是至关重要的一个环节,它帮助开发者记录程序运行时的状态,定位和解决问题。本文将深入探讨七个Java程序员应当了解的日志管理工具,以及相关的经验技巧。 1. Log4j:Log4j是Apache的一...
7. **使用须知**:文件“使用须知.txt”应该包含了Cubic工具的详细使用教程和注意事项,包括如何安装、启动、配置以及如何解读分析结果等。遵循这些指南,开发者可以更有效地利用Cubic来提升开发和调试的效率。 8. ...
使用须知.txt文件很可能是提供关于如何运行和使用这个工具的详细说明,包括可能的命令行参数、注意事项以及可能遇到的问题及其解决办法。 132687511621060838可能是另一个文件的ID或时间戳,这可能代表了工具的创建...