随想录(高质量代码开发)

来源:互联网 发布:会务软件 编辑:程序博客网 时间:2024/05/17 04:47

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

编写代码本身不是一件很复杂的事情。按照一定的逻辑,配合一定的IDE工具,撸起袖子马上就可以干起来。但是不可否认,人与人开发代码的质量还是有差别的。有的同学虽然写代码写了很长时间,但是常常眉毛胡子一把抓,要结构没有结构,要逻辑没有逻辑,更谈不上扩展、测试和性能分析了。那么,个人怎么写出质量还可以的代码呢?

结构分析和设计

谈到写代码,大家都喜欢一边code一边思考。按照我个人的经验来说,这不是一种很好的方法。要写出质量还可以的code,必须在逻辑上是经受得起考验,无论是状态机还是异常情况的考虑上都必须是完备的。然而在写code的时候,你的精力常常是分散的,根本没有办法考虑清楚每一种情况。所以,在code之前还不如把数据结构拆开来,好好分析一下代码的逻辑和流程,至少做到手到、笔到才可以。相关的一些工作都可以在这段时间完成,
1. 设计清楚代码的流程和状态机
2. 将流程、图标用markdown标记出来
3. 分析清楚将来代码的部署环境

编译代码之前再好好阅读一遍

编写好code之后,很多同学都喜欢马上运行,恨不得马上就见到效果。但是,一步到位的情况是很少发生的。或多或少,你的代码会有这样那样的问题,与其在将来才发现这些问题,还不如从头到尾阅读几遍,自己讲给自己听。如果觉得不好意思,可以改成默念的形式,买一只小挂件放在电脑旁边对着它讲也可以。读个几遍之后,一般的编译错误都可以被你发现的,或者说逻辑十分简单的错误也是逃不了你的法眼的。做好了这一步,就可以开始编译调试了。

学会用pclint等代码检测工具检查你的code

一般的编译工具都会对不合理的code给出告警,但是这种告警是非常weak的。所以,我们还会使用第三方工具来检测代码中还有什么风险。windows上用的比较多的就是pclint,linux上用splint比较多。

学会单元测试

各个编程语言都有自己的编程框架,c有cunit,cpp有cpp unit,java有junit。编写单元测试的目的就是测试function对各种输入的响应情况,有没有异常的情况发生。随着测试用例,其实我们对code的信心也会越来越强,不然每一次发布软件的时候,都是胆战心惊的。单纯的黑盒测试是根本没有办法从coverage上面覆盖到所有情况的,所以除了dump功能的function之外,配套的单元测试是十分有必要的。

检测内存泄漏

对于一般的上层软件来说,打交道最多的就是内存,设备空间它也访问不了,中断也没法做,异常也没法处理。所有的资源都需要通过syscall向os申请才可以,这时候检测内存泄漏就十分必要了。一般的客户端程序对于内存泄漏可能看得没有那么重,但是server确实避免不了的,毕竟它是需要长时间运行的。好在有现成的工具可以帮助我们检测内存泄漏的相关情况,linux上用的比较多的就是valgrind。还不清楚的同学可以去好好试一试。

性能分析

按照我个人的经验,软件的性能分析其实是十分伤脑经的,但是也是有规律可循的。一般来说,对于app来说,花费时间最多的地方就是memory copy,lock,database, socket这几个方面。当然,如果这几个方面如果都做得还可以,不妨可以从业务本身的角度去进行分析和优化,这常常也会有不错的收获。好在现在有很多的工具可以帮助我们分析一下软件的瓶颈究竟在哪,windows下用的比较多的就是vtune,linux是gprof。

自动化集成测试工具

像jenkins这样的自动化集成测试工具在企业里面用的比较多。如果自己写的软件比较大,也可以用这种方法。如果只是几千行的小代码,不妨写一个bash脚本,把所有要做的动作用脚本串起来,效果也很不错。

不停重构

很多时候,代码是需要不停重构的,这时候只要按照上面的逻辑不停迭代就可以了,当然测试用例也开始发挥它的作用了。

总之,基本流程应该是这样的,

Created with Raphaël 2.1.0Startdesigncodestatic checkunit testdynamic testjenkinsEnd
2 0
原创粉丝点击