[watermark] 只是根据平时工作经验说下注意方法,就不具体到代码了。
首先要有个规范的编码风格,可能有人奇怪,编码规范和BUG有关系吗?有。如果你始终保持如一的编码规范,那么你每个方法每个变量都会有适当的命名方式,而且你一眼看去就知道该方法要执行什么操作,该变量要起什么作用。首先就避免最基本的语法错误,减少BUG产生。最好不要出现连续50行而且行与行之间没有空格的方法,一个类里有多个这样的方法,马上就让你眼晕。
其次,在执行判断语句或者循环外,为了查明是否是得到想传递的值或者是是否执行应该执行的操作,可以加一句输出语句用来显示执行到该位置的变量的值。(平时工作为java开发,所以举例java语法和eclipse编辑器为例。)比如在有返回值的retrun语句前加一句System.out.println("tmpValue======="+tmpValue);那么,执行到这里的时候,就会在eclipse控制台里显示该语句。为tmpValue为临时变量,只是代指该方法中要返回的值的名字。如果只是为了判断程序走了哪条路径,可以用System.out.println("11111111111111");放在一个条件判断后,而System.out.println("222222222222");放在另一个条件判断后,在MSSQL里执行存储过程或触发器的时候,有时候难判断程序到底走了哪条路径,可以先用这个方法判断下。Oracle的pl/sql中也有异常处理的语句,适当的运用也方便发现错误的地方。用“=========”只是为了在eclipse控制台里起个醒目作用罢了,用“1111”、“2222”也只是为了稍做判断程序走向罢了,具体写法因人而异。java的catch语句对错误信息的处理也要写的详细些,这样对出现错误信息可以判断出错原因,而不是笼统的出错信息。
第三,有了上述两种方法不过是比较简单的防止出错的方法罢了,要判断程序是否出错,最保险的方法莫过于写测试方法做单元测试,在java开发中有junit可以写测试类,把要测试的类的方法写到测试类里去,依次输入特定的值,看是否得到符合要求的数值。eclipse里已经集成了junit,而现在junit.net也出现在.net开发中。
最后,由于在B/S开发中还有javascript出现,所以如果有的html标签或者js出现错误又会有的纠缠,eclipse里可以对Dao设断点进行有效的DEBUG跟踪,那么对于出现js错,那该如何跟踪呢?这个时候,可以安装下VS6.0的IntDev,然后把IE属性里“高级”--“禁用脚本调试”前的勾去掉,那么在JSP页面再出现js错误的时候,就会由IntDev自动进行跟踪显示出错位置。
这就是综合利用各种方法、工具对BUG进行追踪到底的“组合拳”。以上不过是根据工作中遇到的问题说下如何对自己写的程序DEBUG的方法,粗浅之谈,不当之处还望各位给予指正。[/watermark] |