`
cutecoot
  • 浏览: 119868 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

方法与工具(转)

 
阅读更多

方法与工具

从最近遇到的几个故事说起.

故事一:
某天晚上和室友聊天,谈到使用Vim阅读代码,室友也是使用Vim的人,他说用类似ctags的查找定位功能不多,更多的时候,他阅读一段代码,要定位一个功能点,首先是从阅读代码文件的组织,了解项目的功能等入手,等这些都基本清楚了,定位起来就会快很多.我虽然认为,ctags实在是Vim里面一个很不错的功能,不用这个实在可惜,但是他说的那套定位思路其实也是不错的方法.其实我自己用惯了ctags类的功能之后,阅读代码的时候也会用惰性,更多的时候是要靠这些工具来帮我定位,而不是通过自己主动的思考和分析.

故事二:
我的经验里面,写完一段代码之后的第一次编译,如果编译器报错越少,那么可以认为这段代码将来可能出现bug的几率越小,简而言之,我认为代码的质量与第一次编译的报错数量成反比(哦,不用拿helloworld类的程序跟我钻牛角尖了:).有些人写的代码,哗哗的写了一大段,写之前不考虑好,只想着到时候写的不对了可以在编译由编译器的报错来帮忙找问题,这个思路是不对的.编译报错越少的代码,说明了作者写的时候思路更清晰一些,考虑的更周全一些,所有的这些流程上的步骤走的都不错了,所以才有最后编译报错少的结果.编译报错应该是写代码的结果之一,而不应当当成了找代码问题的手段,这样的思路,本末倒置了.

故事三:
进入新项目组后,组内对代码编码的流程有比较严格的要求,包括写一个API之后需要写一个针对这个API的各种情况的测试用例,提交代码的时候,需要走codereview流程,需要使用cpplint检验代码风格,需要将对应的测试用例也提交上去.这一套流程走下来,提交代码的频率比之以前,降低了很多,但是不可否认的是,也确实提高了代码的质量.假设一个功能,由N个API构成,如果能对这N个API都做过详细的测试,保证它们的输入和输出在各种情况下都能符合要求,那么很显然的,最后这个功能也应该是正确的.反之,越是到了测试阶段需要使用类似gdb这样的调试器来定位问题的,会越让人不放心---因为没有制度和流程的保证,谁也不能说将来可能在哪个点会出问题.它可以帮你定位问题,但是没有办法告诉你已经没有问题了,最后这一点,最终还是要通过严格的单元测试等流程来保证的.与第二个故事相同,我认为,在测试阶段使用gdb定位问题的次数也与代码的质量成反比:)

这几个故事综合起来,想要表达的是,做一件事情,需要有流程,制度的保证,当然也需要工具(比如这几个故事里面提到的Vim,gcc,gdb),但是工具就是工具,它只是一种手段,没有办法替代正确的思路,流程和制度等,仅能在整个过程中起到辅助的作用.而且,过分依赖工具,也会给人以惰性(比如前面提到的使用编译器编译代码来找错,比如使用gdb来保证功能正确性等).

所以,更应该提倡的是正确的流程,制度,有了这些,项目的质量才能有所保证.比如,在写一个功能点时,需要具体分解为哪几步,每一步有哪几个API,针对它们的测试用例有哪些,测试时的输入和输出有哪些,需要考虑的异常情况有哪些,等等的.这些都考虑清楚了,再动手写,久而久之,我想这方面的能力会慢慢的提高.
分享到:
评论

相关推荐

    C语言转C#语言工具

    标题中的"C语言转C#语言工具"是一款帮助程序员将C语言编写的代码转换为C#语言的工具。这种工具在跨平台开发或者需要利用C#的特性时特别有用,例如在.NET框架下工作。C语言是一种底层、高效的语言,而C#则提供了更...

    转图工具转图工具转图工具

    这里提到的"转图工具转图工具转图工具"可能是强调其重要性和频繁使用,或者可能是因为输入错误导致的重复。 在提供的文件列表中,我们可以推测这可能是一个关于图像处理软件的打包文件: 1. **HprSnap5.hs5lic**: ...

    格式转换工具osgb格式转obj osg转osgb osgb转ive ive转obj 互转工具

    本文将详细解析“osgb格式转obj,osg转osgb,osgb转ive,ive转obj”等相关知识点,以及如何使用相应的互转工具。 1. osgb格式: OSGB(Open Scene Graph Binary)是一种基于Open Scene Graph (OSG) 的二进制文件...

    C转java工具

    "C转Java工具"就是这样一个工具,它能够将大部分C语言的语法转化为等效的Java语法,使得C语言编写的程序能够在Java平台上运行或者进行进一步的Java优化。这个工具的出现,对于那些已经拥有大量C语言代码库但又希望...

    33个CDM方法学工具-全-英文.rar

    CDM方法学工具提供了明确的界定标准,确保项目的减排目标与全球气候变化目标相一致。 2. **基准线设定**:确定如果没有该项目,预计的温室气体排放量。这是衡量项目减排效果的重要参考,也是计算碳信用的关键。 3....

    PDF转WORD工具

    PDF转WORD工具是一种实用软件,专门设计用于将PDF文件转换为可编辑的Microsoft Word文档格式。在日常工作中,人们可能需要对PDF文件进行修改或编辑,由于PDF的固有特性,直接编辑通常较为困难,因此这类转换工具显得...

    JAVA-JSON工具转换类

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,广泛应用于Web服务和应用程序之间的数据传输,因为它易于读写,...在实际开发中,了解和掌握这些工具的使用方法对于提升JSON处理能力是非常有益的。

    单片机hex转bin工具

    单片机编程与烧录是电子工程领域中的基础工作,其中涉及到不同的文件格式,如HEX和BIN。本文将深入探讨这些格式以及“单片机hex转bin工具”的相关...掌握这类工具的使用方法,对于提升单片机项目开发效率具有重要意义。

    TXT转BIN 工具

    "TXT转BIN工具"就是这样的一个实用程序,它允许我们将文本文件转换为二进制文件。这种转换在很多场景下非常有用,比如编程、数据存储或者逆向工程等。接下来,我们将深入探讨这个过程以及相关知识点。 首先,我们要...

    xml 转Java bean工具

    生成的Java Bean类会包含与XML元素相对应的字段,以及用于设置和获取这些字段值的方法。 描述中提到的"xml 转Java bean工具"进一步强调了这是一个专注于转换功能的工具。它可能是通过命令行界面或图形用户界面操作...

    MapUtils工具类,轻松转换map数据与实体类

    总结一下,`MapUtils`工具类是Java开发中的一个实用组件,它简化了`Map`数据与实体类之间的转换。通过提供便利的方法,开发者可以快速地将键值对数据转换为具有相应属性的对象,反之亦然。这种数据转换能力在处理...

    C++转Java工具

    在JNI开发中,通常会编写Java代码来定义本地方法,然后使用JNI头文件生成对应的C/C++代码,编译后与Java字节码一起运行。 C++转Java工具的工作原理可能包括语法解析、类型映射和代码重构等步骤。它会读取C++源代码...

    批量转UTF8工具-批量转UTF8工具

    总之,批量转UTF8工具是处理大量文本文件编码转换的高效工具,对于需要处理多语言内容或进行跨平台协作的用户来说,掌握其使用方法是非常必要的。无论是个人项目还是企业级应用,这种工具都能显著提高工作效率,减少...

    list转树状结构通用工具类

    2. **工具类**:创建TreeUtil类,提供`listToTree(List)`方法,接收一个Node列表,返回转换后的树结构。 ```java public class TreeUtil { public static List<TreeNode> listToTree(List<TreeNode> nodeList) { ...

    java转js工具

    综上所述,"java转js工具"是一个重要的开发辅助工具,它帮助开发者在Java和JavaScript之间架起桥梁,使得跨平台开发变得更加便捷。然而,使用时需要注意语言特性的差异,以及转换过程中可能出现的问题和挑战。

    NT日语转区工具

    本文将深入探讨这一工具的原理、使用方法以及注意事项。 首先,我们需要理解什么是“转区”。在Windows系统中,每个操作系统都有一个默认的区域设置,它定义了系统如何处理字符编码,包括显示文字的方式。当运行...

    ozip格式转zip工具

    本文将详细介绍OZIP格式、如何将其转换为ZIP格式,以及相关工具的使用方法。 首先,OZIP格式是OPPO手机官方用于卡刷包的特定压缩格式,它包含了系统更新或恢复所需的全部文件。这种格式可能包含特定的头部信息和...

    ASCII HEX 互转工具

    "hexASCII互转.exe"这个文件很可能是一个实用工具,用于帮助用户方便地进行ASCII和十六进制之间的转换。这样的工具通常会有简单的用户界面,用户只需输入文本或十六进制数,点击转换按钮,程序就会自动完成转换过程...

    c++ 转换c# 工具

    综上所述,这个工具包提供了一种方法来跨越C++和C#之间的语言障碍,使得开发团队可以在保持原有代码逻辑的同时,利用C#的现代特性和平台优势。然而,值得注意的是,自动转换工具虽然能节省大量手动转换的时间,但...

    Arcgis pro TXT格式坐标转SHP工具箱

    为此,ArcGIS Pro专门设计了一个名为"TXT格式坐标转SHP工具箱"的实用工具,本文将详细介绍这一工具箱的使用方法及其实用性。 1. **工具箱加载与使用** ArcGIS Pro的工具箱是集成了各种数据处理工具的模块,用户...

Global site tag (gtag.js) - Google Analytics