如何能保证自己的功能代码不出纰漏

几天来,程序都快被BUG烤糊了,经历了一系列细节崩坏的过程后,我对程序质量的问题有了一种全新的认识,如何建造健壮高效的软件?

责任心?机智?经验?工匠精神?

还是从具体的方法和执行过程研究自身吧……

1 对需求的掌控程度太浅(需要二次确认后对代码进行review)

从开第一次需求串讲开始,到底对需求研究过几次?

这个问题我现在必须重视,想当然的做了一些功能,因为靠想象和别人忙碌时口头的确认作为需求依据,功能完成后又是口头确认,原本不会出现的问题就只会依赖别人的严格测试和队友偶尔发现的状况去发现和确认,但隐藏在代码细节处的问题基本就变成了黑暗角落,封存在隐秘地带,直到一个关键时刻,这个地方的炸弹就会突然飞出,让你措手不及,因为问题就是问题,不因为你不去看他就消失。

2 学习测试思想

总觉得技术工具箱是面向实现的这种想法很有问题,收集了实现只是找到了零件和工具,做出的东西目的是要用的,谁在用怎么用,要从最简单的情景跳出来,推演至少三遍以上,也就是创造分支,实际上以前张博士说的多加判断捕获异常还不够,还要在第一遍推演的基础上继续进行推演,利用正反馈原理迭代设计。

3 工期的判断

什么时候完成设计?什么时候完成codeing?什么时候提交测试?在心里有个数,如果目标工期到了,提交测试的代码如果不能做到已经自测50%以上,则不能轻易交由测试人员接管质量保障任务,因为这时成品根本没有质量可言。

如果提交了测试,那么测试人员会对你的功能错误提出很多疑惑,这时会浪费很多不必要的时间,这对质量是致命的,时间浪费了!如果把和别人解释的时间、对设计推倒重来的时间、沮丧的心情带来的低效工作时间、赶工出现新BUG的修改和确认时间等浪费的时间都算上,也许你重新做一个软件可能更有价值。

4 制定代码review和重构计划

代码提交测试了以后该干嘛?

扯皮?悠哉?购物?休息?

不,这些还不能干,花两小时时间,详细将程序清单整理出来,对着至少看一遍,相信我,很容易能看出来不对劲的地方,然后你会很庆幸做了这件事。

说说我都看见过什么吧。

在一个后台项目正常业务跑通的情况下,我以为完成任务了,直到我看了看BUG列表,有一些我认为很小的问题,到后面一翻代码,大大小小的逻辑漏洞就出现了,由一个分支和一个点联系到许多地方的调用判断和实现方式都有问题,于是就开始了打补丁的过程。

从测试初就开始打补丁,一直打到了测试结束,心里还是没有踏实下来,真的很折磨人,虽然这种惊慌和恐惧可能并不应该出现,如果心里对所有做过的东西有个底的话。

这时候程序清单能帮助程序员心里有底,因为做过的东西都列在那儿,

看一遍觉得命名看着不爽

看两遍觉得封装的参数有些多余,如果靠类型或数组传递会更有扩展性。

看三遍觉得多个类中的公共方法应该抽出来扔一个地方维护。

看四遍觉得有些实现用泛型应该会实现得更容易使用。

看五遍觉得业务的扩展性如果能用基类和接口做以后能省不少事。

看六遍就觉得这代码简直扔到垃圾箱里都可以,还是重新做一遍比较舒服。

然后就没有然后了。

5 是什么让我没做到以上这些

没做过,所以没做到,比如现在,你觉得我在思考、研究追寻真理,其实我是在扯皮。。

时间: 2024-11-10 11:35:15

如何能保证自己的功能代码不出纰漏的相关文章

js常用功能代码

js常用功能代码(持续更新): 1,--折叠与展开 <input id="btnDisplay" type="button" class="baocun2" value="添加" onclick="changeDisplay()" /> <script type="text/javascript"> function changeDisplay() { var h

IOS开发-OC学习-常用功能代码片段整理

IOS开发-OC学习-常用功能代码片段整理 IOS开发中会频繁用到一些代码段,用来实现一些固定的功能.比如在文本框中输入完后要让键盘收回,这个需要用一个简单的让文本框失去第一响应者的身份来完成.或者是在做与URL有关的功能时,需要在Info.plist中添加一段代码进而实现让网址完成从Http到Https的转换,以及其他的一些功能. 在从一个新手到逐渐学会各种功能.代码.控件.方法如何使用的过程中,也在逐渐积累一些知识,但是一次总不会把这些东西都深刻记住并完全理解.所以在这儿记录下这些东西,用来

jQuery实现的输入文本计数功能代码

jQuery实现的输入文本计数功能代码:在一些比较人性化的留言回复功能中,都有这样的设计,那就是当输入文本的时候,能够实现计数功能,可以提示用户还能能够输入多少文字,这样可以便于用户选择更合适的语言描述,下面就是一段能够实现此功能的代码,需要的朋友可以进行一下借鉴.代码如下: <!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author&q

通过javascript库JQuery实现页面跳转功能代码

通过javascript库JQuery实现页面跳转功能代码的四段代码实例如下. 实例1: 1 2 3 4 $(function(){ var pn = $("#gotopagenum").val();//#gotopagenum是文本框的id属性 location.href = "NewList.aspx?pagenum="+pn;//location.href实现客户端页面的跳转 }); 实例2: 实现跳转:window.location = 'user!add.

微网站中加入一键拨号功能代码

在做一个微信的微网站中的一个便民服务电话功能的应用,用到移动web页面中列出的电话号码,点击需要实现调用通讯录,网页一键拨号的拨打电话功能. 如果需要在移动浏览器中实现拨打电话,发送email,美国服务器,调用sns等功能,移动手机WEB页面(HTML5)Javascript提供的接口是一个好办法. 采用url链接的方式,实现在Safari ios,香港服务器,Android 浏览器,webos 浏览器,塞班浏览器,IE,Operamini等主流浏览器,进行拨打电话功能. 1.最常用WEB页面J

Java UDP实现聊天功能代码

我以前经常写的是基于TCP的网络编程,由于TCP建立连接鼻血要经过三次握手连接,服务器端需要阻塞式等待客户端的连接.而UDP则是可以直接向目的地址的目的端口上发送数据包,由于它只负责发送出去就好,不管对方是否正确接受到与否,所以当网络性能不好时它容易出现丢包的问题.(注意:UDP是基于数据报为单位进行传输的,而TCP是一种基于流进行传输的) 但是UDP很好的模拟了我们呢平时聊天的方式,可以很好的实现连续多次发送和接受,也就是简单的QQ聊天的功能. 现在来简要介绍Java中有关UDP编程相关的类:

调用新浪微博接口,实现“分享”功能——代码实现

<!doctype html> <html> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <div> <p>点击下面的按钮可以将这段文字和图片分享到新浪微博哦!@独行冰海</p> <img src='http://t.cn/zRxMzZE' title='独

【DRP】-Dao层常用功能代码:增删改查

本系列博客内容为:做DRP系统中Dao层常用功能. 该项目采用MVC架构 C(Controller)控制器,主要职责;1.取得表单参数:2.调用业务逻辑:3.转向页面 M(Model)模型,主要职责:1.业务逻辑:2.保存数据的状态 V(View)视图,主要职责:显示 本文主要是针对于Dao层的常见使用方法:增删改查sql语句及常用操作. 1 package com.bjpowernode.drp.basedata.dao; 2 3 import java.sql.Connection; 4 i

DevExpress Grid控件经典常用功能代码收集

随着DevExpress 控件包越来越多的被中国用户使用,由于是英文版本,看英文版使用说明非常困难,慧都控件网在DevExpress 控件包使用方面有多年的研究,慧都控件网会不断的把DevExpress 使用经验分享给大家.»更多DevExpress开发资源与帮助文档 下面是我们平时收集最常用的DevExpress Winform 4个代码片段,比较常用,希望对广大DEV用户有帮助. 一 .GridControl的删除操作 private void rILinkEditInfoDel_Click