首页 > 其他 > 详细

对近期开发中遇到的有趣bug的思考

时间:2017-10-24 23:30:50      阅读:216      评论:0      收藏:0      [点我收藏+]

问题一:

  第一个问题是对IDE过于依赖导致的bug,由于我经常使用Java和c++,之间的一些区别有时候就很容易忽略:

  

int a =0;
int b = 1;
if(a=b)
{
     ... 
}

 

  在Java中,这样的判断eclipse是会报错的,因为a=b是赋值语句,所以返回值是对左值的引用,返回int,而java的判断语句括号中必须是boolean,不然会报错。

  而在c++中是不会报错的,括号内先赋值操作,a=b,变成a=1,返回a的引用,int类型的1在c++中表示判断时为true,所以这个if判断始终成立。

 

  这样的问题是对于IDE过度依赖,代码开发的过程中粗心导致的bug,并且在debug过程中很难发现,在开发中花费了较长的时间去debug。

 

 

问题二: 

  在web开发过程中,需要完成一个小功能:输入一个年份,确定其是否合法,并且判断该年份是否为闰年。

 

  对于一个闰年的判断,有以下几个注意点

    1.可以被被400整除的年份

    2.可以被4整除,但不能被100整除的年份


  以下是最终完成的判断代码:

 1 public boolean isLeapYear(int year)
 2 {
 3     boolean judge = false;
 4   
 5     if (year % 4 == 0)
 6         judge = true;       
 7 
 8     if (year % 100 == 0)
 9         judge = false;
10  
11     if (year % 400 == 0)
12         judge = true;
13 
14     return judge; 
15 }

  

  在刚开始的开发中,由于逻辑的不清楚,对于闰年的判断顺序先判断4整除,然后判断400,最后用100去修正,这样导致了整除400的年份被100修正后,

变成了非闰年,是不符合闰年判断的规则的。

  这个bug发生的原因是在开发开始的时候,没有理清判断流程,导致了判断顺序的错误。

对近期开发中遇到的有趣bug的思考

原文:http://www.cnblogs.com/iProg-S/p/7726297.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!