方法与工具
从最近遇到的几个故事说起.
故事一:
某天晚上和室友聊天,谈到使用Vim阅读代码,室友也是使用Vim的人,他说用类似ctags的查找定位功能不多,更多的时候,他阅读一段代码,要定位一个功能点,首先是从阅读代码文件的组织,了解项目的功能等入手,等这些都基本清楚了,定位起来就会快很多.我虽然认为,ctags实在是Vim里面一个很不错的功能,不用这个实在可惜,但是他说的那套定位思路其实也是不错的方法.其实我自己用惯了ctags类的功能之后,阅读代码的时候也会用惰性,更多的时候是要靠这些工具来帮我定位,而不是通过自己主动的思考和分析.
故事二:
我的经验里面,写完一段代码之后的第一次编译,如果编译器报错越少,那么可以认为这段代码将来可能出现bug的几率越小,简而言之,我认为代码的质量与第一次编译的报错数量成反比(哦,不用拿helloworld类的程序跟我钻牛角尖了:).有些人写的代码,哗哗的写了一大段,写之前不考虑好,只想着到时候写的不对了可以在编译由编译器的报错来帮忙找问题,这个思路是不对的.编译报错越少的代码,说明了作者写的时候思路更清晰一些,考虑的更周全一些,所有的这些流程上的步骤走的都不错了,所以才有最后编译报错少的结果.编译报错应该是写代码的结果之一,而不应当当成了找代码问题的手段,这样的思路,本末倒置了.
故事三:
进入新项目组后,组内对代码编码的流程有比较严格的要求,包括写一个API之后需要写一个针对这个API的各种情况的测试用例,提交代码的时候,需要走codereview流程,需要使用cpplint检验代码风格,需要将对应的测试用例也提交上去.这一套流程走下来,提交代码的频率比之以前,降低了很多,但是不可否认的是,也确实提高了代码的质量.假设一个功能,由N个API构成,如果能对这N个API都做过详细的测试,保证它们的输入和输出在各种情况下都能符合要求,那么很显然的,最后这个功能也应该是正确的.反之,越是到了测试阶段需要使用类似gdb这样的调试器来定位问题的,会越让人不放心---因为没有制度和流程的保证,谁也不能说将来可能在哪个点会出问题.它可以帮你定位问题,但是没有办法告诉你已经没有问题了,最后这一点,最终还是要通过严格的单元测试等流程来保证的.与第二个故事相同,我认为,在测试阶段使用gdb定位问题的次数也与代码的质量成反比:)
这几个故事综合起来,想要表达的是,做一件事情,需要有流程,制度的保证,当然也需要工具(比如这几个故事里面提到的Vim,gcc,gdb),但是工具就是工具,它只是一种手段,没有办法替代正确的思路,流程和制度等,仅能在整个过程中起到辅助的作用.而且,过分依赖工具,也会给人以惰性(比如前面提到的使用编译器编译代码来找错,比如使用gdb来保证功能正确性等).
所以,更应该提倡的是正确的流程,制度,有了这些,项目的质量才能有所保证.比如,在写一个功能点时,需要具体分解为哪几步,每一步有哪几个API,针对它们的测试用例有哪些,测试时的输入和输出有哪些,需要考虑的异常情况有哪些,等等的.这些都考虑清楚了,再动手写,久而久之,我想这方面的能力会慢慢的提高.
故事一:
某天晚上和室友聊天,谈到使用Vim阅读代码,室友也是使用Vim的人,他说用类似ctags的查找定位功能不多,更多的时候,他阅读一段代码,要定位一个功能点,首先是从阅读代码文件的组织,了解项目的功能等入手,等这些都基本清楚了,定位起来就会快很多.我虽然认为,ctags实在是Vim里面一个很不错的功能,不用这个实在可惜,但是他说的那套定位思路其实也是不错的方法.其实我自己用惯了ctags类的功能之后,阅读代码的时候也会用惰性,更多的时候是要靠这些工具来帮我定位,而不是通过自己主动的思考和分析.
故事二:
我的经验里面,写完一段代码之后的第一次编译,如果编译器报错越少,那么可以认为这段代码将来可能出现bug的几率越小,简而言之,我认为代码的质量与第一次编译的报错数量成反比(哦,不用拿helloworld类的程序跟我钻牛角尖了:).有些人写的代码,哗哗的写了一大段,写之前不考虑好,只想着到时候写的不对了可以在编译由编译器的报错来帮忙找问题,这个思路是不对的.编译报错越少的代码,说明了作者写的时候思路更清晰一些,考虑的更周全一些,所有的这些流程上的步骤走的都不错了,所以才有最后编译报错少的结果.编译报错应该是写代码的结果之一,而不应当当成了找代码问题的手段,这样的思路,本末倒置了.
故事三:
进入新项目组后,组内对代码编码的流程有比较严格的要求,包括写一个API之后需要写一个针对这个API的各种情况的测试用例,提交代码的时候,需要走codereview流程,需要使用cpplint检验代码风格,需要将对应的测试用例也提交上去.这一套流程走下来,提交代码的频率比之以前,降低了很多,但是不可否认的是,也确实提高了代码的质量.假设一个功能,由N个API构成,如果能对这N个API都做过详细的测试,保证它们的输入和输出在各种情况下都能符合要求,那么很显然的,最后这个功能也应该是正确的.反之,越是到了测试阶段需要使用类似gdb这样的调试器来定位问题的,会越让人不放心---因为没有制度和流程的保证,谁也不能说将来可能在哪个点会出问题.它可以帮你定位问题,但是没有办法告诉你已经没有问题了,最后这一点,最终还是要通过严格的单元测试等流程来保证的.与第二个故事相同,我认为,在测试阶段使用gdb定位问题的次数也与代码的质量成反比:)
这几个故事综合起来,想要表达的是,做一件事情,需要有流程,制度的保证,当然也需要工具(比如这几个故事里面提到的Vim,gcc,gdb),但是工具就是工具,它只是一种手段,没有办法替代正确的思路,流程和制度等,仅能在整个过程中起到辅助的作用.而且,过分依赖工具,也会给人以惰性(比如前面提到的使用编译器编译代码来找错,比如使用gdb来保证功能正确性等).
所以,更应该提倡的是正确的流程,制度,有了这些,项目的质量才能有所保证.比如,在写一个功能点时,需要具体分解为哪几步,每一步有哪几个API,针对它们的测试用例有哪些,测试时的输入和输出有哪些,需要考虑的异常情况有哪些,等等的.这些都考虑清楚了,再动手写,久而久之,我想这方面的能力会慢慢的提高.
相关推荐
在Arcgis软件下实现基数转换比较常用的有两种方法,一种是通过连接对应关系表进行转换,另一种是在模型构建器中利用Python语句通过计算字段来实现。此工具集采用Python语句在模型构建器下建模得到,包含转换一级类、...
BT文件转磁力链接工具使用方法: 1.直接用鼠标拖拽Torrent文件到界面窗口; 2.注意本工具直接Torrent文件; 这是小编转换的某个BT文件的磁力链接,大家喜欢的话不妨看看喽。 magnet:?xt=urn:btih:228A03FE7E2C...
java一键xml转map,一键map转xml工具类,代码已封装好,一个方法即可将两种格式文本互转,注意是互转,网上很多只有xml转map,并不支持map转xml
可以把C代码转成C#代码参考使用,双击打开EXE并复制代码进去点转换就可以,非常简单,亲测可用,但是代码库引用那些无法处理,只是单纯转换写法
企业数字化转型案例及常用工具(企业数字化转型思路、方法与案例).pptx
java工具类 : string转10进制sacii byte数组、 10进制sacii byte数组转16进制字符数组、 16进制字符数组转16进制byte数组、 string与BCD互转等方法,包含多个转换方法, 足够满足日常解包组包需求
正常情况下Altium导入allegro brd文件需要安装cadence,我这里提供一个从cadence 中提取的精简版转换工具 事实上altium就是调用这个工具先将二进制格式的brd文件转换成ascii格式的alg然后再导入altium的。
androidmk 转换Android.bp工具方法
C#的16进制与10进制浮点数互转工具,IEEE754浮点数的转换方法
不妨试试抖音转单号工具! 无货源如何开通电子面单?让发货更加便捷! 快递单号伪造软件:危险还是便利的工具? 解密彩虹工具箱的无货源单号转换功能:帮你顺利发货! 【抖音小店发货新技巧】不开通电子面单也能轻松...
shp转txt工具,使用方法,直接将shp文件中*.shp文件拖到“shp2txt.ext”上就可以了,他会自动在shp文件夹中生成一个txt文件。使用时不用打开工具
Citra群游戏格式转换解密工具.exe 如同字面上意思,這是nds的工具可以將.cia .cai轉換成.nds 使用方法,直接把檔案拖移到他身上,就會自動轉換了
使用方法是test文件夹放在D盘根目录,里面的工具箱可以在arcgis中找到使用,使用中有什么不明白的可联系。后期免费升级,目前最新版为220106。最新版只在csdn我的账号zhtleon发布,其他如某宝某鱼等均为假冒敬请注意...
json字串 解析成jsonObject的工具,替代eval方法使用 IE8以上浏览器貌似自带 JSON.stringify
双击运行工具 1:程序会将当前目录下的所有xls文件中的所有sheet表转为TXT文件,如果sheet名有重复则备份原文件(在原文件名后添加一个五位随机数字) 2:或者会将当前目录下的所有TXT文件转换为resut.xls文件 3:...
PS:转换过程中,如果其他问题请自行处理。考虑清楚后在使用。 1、版本范围:T+12.0以上版本;U8+12.0及以上版本(建议先转换到U8的12.0或12.1版本,然后把账套升级到U8的12.1以后版本) 2、支持结转的数据范围:...
生活中经常用到map数据与实体类的转换,今天就写了一篇博客,顺便把文中涉及到的代码打包出来。以供参考
xml的一些转换方法
工具使用方法V3录音格式转换.pdf
epub转mobi工具 该工具基于亚马逊提供的电子书格式转换工具,无需安装,方便快捷。 使用方法: 将epub格式文件直接拖拽到该程序的图标上,系统会在相同目录下创建一个mobi格式的文件。