方法与工具(转)

标签: 方法 工具 | 发表时间:2013-12-05 17:27 | 作者:cutecoot
出处:http://www.iteye.com

方法与工具

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

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

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

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

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

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


已有 0 人发表留言,猛击->> 这里<<-参与讨论


ITeye推荐



相关 [方法 工具] 推荐:

方法与工具(转)

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

中台工具产品方法论

- - 戴传庆
做中台工具产品不是一件容易的事情,需要对接上层所有业务方,做的慢业务方不满意,做的快业务方未必会给好的评价. 属于容易背锅,细节极其多,用户反馈建议多,但又难以出成绩和证明自己做的好. 虚构一些场景,大家肯定都遇到过. 老板:XX功能我觉得不错,做了吗. 老板:XX和XX等N个功能都不错,马上排期做下.

10个前端开发必备的工具或使用方法

- - 我爱水煮鱼
工欲善其事必先利其器,作为前端开发的你,有了本文介绍的工具和一些功能,就可以高效的处理任务和信息. 下面的这些工具都是本人平时经常用到的,如果你有更好的更有效率的工具,请告知一声,补充一下. 前端要看网页,浏览器是必备的,但为什么要选择火狐浏览器而不是谷歌、IE、opera、360. 首先,IE就不要谈了,360那些国产的也不要提了,Opera 国内使用率并不高.

提高iOS开发效率的方法和工具(升级篇)

- - IT江湖
这篇文章主要是介绍一下我在iOS开发中使用到的一些可以提升开发效率的方法和工具. 首先要说的肯定是IDE了,说到IDE,Xcode不能跑,当然你也可能同时在使用AppCode等其他的IDE,在这里我主要介绍Xcode中提升开发效率的方法. 快捷键是开发中必不可少的,当你善于使用快捷键的时候,十指在键盘上飞舞,那画面太美,我不敢想象.

最新Win7激活工具完美100%成功激活方法大全

- Gfans - 小建の软件园
Windows 7 Loader V2.04 可以完美帮各位童鞋激活手头上使用的Windows 7系统,你懂滴. Windows 7 的清新界面与强大功能让各位童鞋为之心动,不过偶发现很多朋友手中的Windows 7还处于未激活状态,现在各位可以低调再低调的偷偷把它激活了. 当然网上还流行有其他方法激活的,例如:神马激活法:KH2J9-PC326-T44D4-39H6V-TVPBY、TFP9Y-VCY3P-VVH3T-8XXCC-MF4YK,此激活码号称无限激活;修改注册表+Ghost法(治标不治本,虽然短期不影响使用)等等.

GO 工具包安装方法 - Go语言中文网 - Golang中文社区

- -
go 安装依赖包一般会通过四种路径. 比如我们可以通过go get github.com/xxx来下载安装包. 下载好之后, 通过go install github.com/xxx来安装包. 安装包会下载到$GOPATH/src文件中. 安装后的执行文件在$GOPATH/bin文件. 当我们执行go get golang.org/x/tools/cmd/goimports会报错.

Nagios通过check_megaraid_sas(基于MecaCli工具的插件)对RAID卡和硬盘进行监控的方法

- kissingwolf - 骨骨学习笔记
对于使用了LSI MegaRAID卡搭建RAID的, 通过LSI公司提供的MegaCli工具, 就可以实现对RAID卡和硬盘的监控. 注: DELL PERC5/6(PowerEdge RAID ControllerPERC)阵列卡实际上也就是LSI MegaRAID SAS controllers..

工具小结

- yboren - 博客园-welfear
文档名称:工具小结(Tools Tips) 文档维护:Xuefeng Chang([email protected] @welfear) 文档日期:2010.10.17 find. -name "*.java" | sed 's/.*\///' | \ sort | uniq -c | grep -v "^ *1 " | sort -r 短小精干.

Windows工具集

- - 互联网 - ITeye博客
参考: https://community.rapid7.com/servlet/JiveServlet/downloadBody/2881-102-2-6389/Mitigating%20Service%20Account%20Credential%20Theft%20on%20Windows.pdf.

模板方法

- - 博客园_首页
由于前两天刚好用到模板方法这个模式,而且这个模式相对来 比较简单实用,就写写个人的一些认知吧. 大家对宋丹丹和赵本山的小品里有一个很经典的台词一定不会陌生,而且还日常中经常引用:. 《钟点工》中宋丹丹问要把大象装冰箱,总共分几步. 赵本山就懵了,大象那么大,冰箱那么小,怎么才能把大象装冰箱里呢. 答案也很经典:三步:第1步,把冰箱门打开;第2步,把大象装进去;第3步,把冰箱门带上.