随想录(个人怎么开发出质量还可以的代码)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱: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

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-07-28 16:42:09

随想录(个人怎么开发出质量还可以的代码)的相关文章

开发者如何利用工具快速开发出完美APP

文|移动互联网李建华 微信:ydhlwdyq 传统的个人开发者,要想开发出一个完美的APP要 经过以下几个过程:搭建开发环境,写代码,写统计系统,开发即将完成后,要购买服务器,然后把程序布置到服务器上进行测试,接着是对APP做手机适配性测 试,需要借很多手机进行测试,测试完毕后,上线,和很多渠道商合作,然后发布上百个渠道等,后续还可能涉及到很多复杂的运营工作,如要赚钱,同时还面临着 一系列的山寨盗版问题,还要面临着存储速度.还要找广告商等等一系列的问题. 根据这些工作量,一个人要想开发出完美的A

如何开发高质量的软件 - 通过测试集中型的软件开发方法来提高软件质量

“构建技术系统所要做的工作是非常繁重的,同时还需要专业知识:语言和协议,编码与调试,测试与重构.”——James Garrett 概述 每年各个企业都在努力实现企业的主要目标.通常,这都是通过实现基于度量指标的性能目标(可能包括质量目标)以及利用最佳惯例规范商业流程来实现的.最 后,要通过一些测试和报告形式来评估这些目标对企业的影响.在接受评估之前,机智的员工都会要一个评估单——但是在开发新的软件产品,确定测试目标时,他 们常常会忽略这一点. 企业在设计实体产品时,会花很多时间设计产品的生成流程

初学小白该怎样开发出高效J2EE系统

当前,J2EE学习者可谓是越来越多,并且随着J2EE本身技术不断的发展,也涌现出各种新型概念,笔者特此撰写此文,目的就是试图从一种容易理解的角度对这些概念向初学者进行解释,从而让大家掌握学习J2EE学习方向,达到条理清晰. 首先,我们需要搞清楚的是,Java和J2EE是两种不同的概念:Java不仅仅是指一种语言,它已经代表与微软不同的另外一个巨大阵营,所以Java有时是指一种软件系统的流派,当然目前最主要的两大流派(体系)就是.NET和Java. J2EE可以说指Java在数据库信息系统上实现,

学会了 C 语言真的可以开发出很多东西吗?

马里奥碰到花朵就变身. 什么是马里奥?一个装着 16 × 32 个小色块的长方形,其中一些色块填着颜色,另一些没有.什么是花?一个 16 × 16 的正方形.什么是「变身」?把马里奥这个方块里面代表衣服的褐色变成红色,代表背带裤的红色变成白色.什么是褐色?暂且说它是 0x887000 这个数字.什么是「碰到」?马里奥的长方形与花朵的正方形有所重叠.什么是「重叠」?假设马里奥的这个方块占据屏幕(什么是屏幕?一个能装下 256 × 240 个小色块的矩形)中 X 方向 101 到 116.Y 方向

学会了 C 语言真的可以开发出很多东西吗

原帖地址:知乎 一个人在知乎上问了这么一个问题,然后 涛吴 有了下面的回答. 马里奥碰到花朵就变身. 什么是马里奥?一个装着 16 × 32 个小色块的长方形,其中一些色块填着颜色,另一些没有.什么是花?一个 16 × 16 的正方形.什么是「变身」?把马里奥这个方块里面代表衣服的褐色变成红色,代表背带裤的红色变成白色.什么是褐色?暂且说它是 0x887000 这个数字.什么是「碰到」?马里奥的长方形与花朵的正方形有所重叠.什么是「重叠」?假设马里奥的这个方块占据屏幕(什么是屏幕?一个能装下 2

用web技术开发出原生的App应用的体会(1)

本人是是个前端小白,学前端已经有半年的时间了,前几天开了个博客,希望记录自己学习历程的点滴. 今天要写的是关于用html,css,javascript等web技术开发原生的app应用. 总所周知,web所写出东西的性能一直被人饱受诟病,这个也是做web开发会一直被轻视的原因之一,那么怎么用web技术开发出较好的有原生一般体验的应用呢?原生的应用开发成本高,而且更新周期短,这就需要用户不断的更新才能使用到原生App的一些新的功能和特性,试想一下,一般的我们的手机安装的应用都在10个以上,那么每隔一

IBM特别开发出一套全新的企业模型-- 组件化商业模式(Component Business Model,CBM)

我有一个想法:EOM 我今天在对解决方案作领域分解(domain decomposition)的时候,想到从企业运营的角度出发,能不能提出一个企业运营图EOM(Enterprise Operation Map)的这么一个概念.EOM是一种业务过程模型或者框架,它为企业提供所要求的企业过程,它从企业的业务视图出发来描述需求,对业务过程进行分析和设计:再经过系统分析和设计,形成解决方案的分析和设计,最终建立系统并投入使用.EOM的重点在于对企业开展业务所涉及的过程单元和业务活动进行分类,并通过多种方

10分钟入门微信小程序开发:从环境搭建到开发出第一个程序。

小程序简介 小程序是一种不需要下载安装即可使用的快速应用,它实现了应用“触手可及”的操作:用户扫一扫或搜一下即可打开应用,完全不需要安装,因此小程序不仅可提高的用户的应用体验,也方便应用的传扩散. 本文带大家快速入门小程开发,了解从环境搭建到开发出一个简单hello world程序,从而上手小程序开发,让你快速成功小程序开发人员.之后,想开发什么样的小程序,就可以自己研究和努力了. 下面,是循序渐经的步骤: ?1.注册小程序 在开发之前,当然需要先注册一个小程序账号. 进入“微信公众平台”进行注

怎样在ios中的Safari内开发出一款类似native app一样的全屏webapp

此文章转自我www.gbtags.com的文章. <meta name="format-detection" content="telephone=no email=no" /> 1.在meta中取消电话邮箱的识别. <meta name="apple-touch-fullscreen" content="yes"> 2.据说是全屏,但是实际ios7.1无效果,查看了百度的大网站的web站点,都已经移除