设计工具
目前的设计工具主要就是那些能创建设计图表的图形化工具。
源代码工具
编辑
- 集成开发环境(IDE);
- 在编辑器中进行编译和错误检测;
- 与源代码控制工具、build工具、测试工具、除错工具集成;
- 显示程序的扼要视图或大纲视图;
- 跳转到类的定义、子程序定义、变量定义处;
- 跳转到使用某个类、子程序、变量的全部位置;
- 针对特定语言的编排格式;
- 针对正在编辑的语言的交互式帮助;
- 花括号匹配;
- 常用语言的结构模板;
- 智能缩进;
- 自动化的代码转换或重构;
- 可以用熟悉的编程语言进行宏编程;
- 列出查找的字符串,使常用的字符串无需重新键入;
- 在查找和替换时可用正则表达式;
- 在一组文件中进行查找和替换;
- 同时编辑多个文件;
- 双列式的diff对比;
- 多级编辑动作撤销;
- 针对多个文件的字符串查找和替换;
- diff工具;
- merge工具;
- 源代码美化器;
- 生成接口文档的工具;
- 模板;
- 交叉引用工具;
- 类的继承体系生成器。
分析代码质量
- 吹毛求疵的语法/语义检查器;
- 尺度报告器。
重构源代码
- 重构器;
- 结构改组工具;
- 代码翻译器。
版本控制
- 源代码控制;
- 依赖关系控制,类似UNIX下提供的make工具;
- 项目文档的版本管理;
- 将项目的工件关联到一起,这样当需求发生变更时,你能找出收影响的代码和test cases。
可执行码工具
产生目标码
- 编译器与链接器;
- Build 工具;
- 程序库;
- 容器类;
- 信用卡交易服务;
- 跨平台开发工具;
- 数据压缩工具;
- 数据结构与算法;
- 数据库操作工具与数据文件操控工具;
- 图解/图示/图表工具;
- 图像工具;
- 许可证管理器;
- 数学运算;
- 网络与互联网通信工具;
- 报表生成器与报表查询生成器;
- 安全与加密工具;
- 电子表格和数据网格工具;
- 文本与拼写工具;
- 语音、电话与传真工具;
- 代码生成向导;
- 安装;
- 预处理器;
调试
下列工具有助于程序调试:
- 编译器的警告信息;
- 测试用的脚手架;
- Diff工具;
- 执行剖测器;
- 追踪监视器;
- 交互式调试器——软件版和硬件版。
测试
下列功能特性和工具有助于你进行有效的测试:
- 自动测试框架,如JUnit、NUnit、CppUnit等;
- 自动化的测试生成器;
- 测试用例的记录和回放工具;
- 覆盖率监视器;
- 符号调试器;
- 系统扰动器;
- Diff工具;
- 脚手架;
- 缺陷注入工具;
- 缺陷跟踪软件。
代码调整
- 执行剖测器;
- 汇编代码清单和反汇编。
核对表:编程工具
- [ ] 你有一套有效的IDE吗?
- [ ] 你的IDE继承了:源代码控制、build/测试/除错工具,以及其他有用的功能吗?
- [ ] 你有能自动进行常用的重构操作的工具吗?
- [ ] 你是否使用版本控制工具,对源代码、内容、需求、设计、项目计划及其他的项目构件进行管理?
- [ ] 如果你正面对超大型的项目,你是否使用了数据字典或者其他“包含系统中使用的各个类的权威描述”的中央知识库;
- [ ] 当你用到代码库时,你是否考虑用它来代替“编写定制的代码”?
- [ ] 你是否充分利用了交互式除错器?
- [ ] 你是否使用make或其他“依赖关系控制软件”,用来高效并可靠地build程序?
- [ ] 你的测试环境包含有自动化的测试框架、自动测试生成器、覆盖率监视器、系统扰动器、diff工具,以及缺陷跟踪软件吗?
- [ ] 你有没有制造过定制工具——能满足特定项目需求的那种,特别是能自动执行重估任务的工具?
- [ ] 总而言之,你的工作环境有没有从“充足的工具支援”中获益?
要点
- 程序员有时会在长达数年的时间里忽视某些强大的工具,之后才发现并使用之;
- 好的工具能让你的日子过得安逸许多;
- 下面这些工具已经可用了:编辑、分析代码质量、重构、版本控制、除错、测试、代码调整;
- 你能打造许多自己用的专用工具;
- 好的工具能减少软件开发中最单调乏味的工作的量,但它不能消除对“编程”的需要,虽然它会持续地重塑“编程”的含义。