日常开发犯的错误


 

说明:

这篇文章将记录我个人开发中所犯的过错,写出来让大家批评,也希望大家以后不要犯我犯过的错误。

欢迎大家在评论里公开自己遇到的经典问题,我会将其更新在文章里并注明你的名字。

 

一、字符串处理问题:

在字符串截取时,稍不注意就有可能会出错。

示例1

我们要判定:如果category里含有mens的则给gender赋值为male,如果有womens的则gender赋值为female。

错误代码如下:

View Code
 1  //这样永远也判定不到female上去,因为womens包含了mens ,
2 //当时是被测试MM批斗惨了的。正确代码就不说了,是程序员的都写得出来。细心啊!
3 if (gender == "" && category.ToLower().IndexOf("mens") > -1)
4 {
5 gender = "male";
6 }
7 else if (gender == "" && category.ToLower().IndexOf("womens") > -1)
8 {
9 gender = "female";
10 }

示例2

假设我们有1到300个站点要管理,现在要求如果是151、152、153、154、155号站点则进行XXX的处理。

错误代码如下:

View Code
1             //因为我们都知道正则处理效率不高,这段代码要被调用上百万次,所以用了字符串处理。
2 //但当时没有考虑到1、51这种都能判定成功,而测试测的时候也不会因这次的改动而去测1、51号站点,差点就出了online bug,
3 //也让测试MM狂批了一次,不过这的确是自己的过错,也没有什么好生气的,以后小心点。
4 if("151,152,153,154,155,".IndexOf(ddlCompany.SelectedValue+",")>-1)
5 {....}
6 //正确代码如下
7 if(",151,152,153,154,155,".IndexOf(","+ddlCompany.SelectedValue+",")>-1)
8 {....}

示例3

在处理空字符串时的问题:

View Code
 1  //这个错误很白痴,但我还是犯了,还差点整出大问题,程序员越当越白痴了
2 string userName = null;
3 if(string.IsNullOrEmpty(userName.Trim())) //我想去掉输一串空格的。
4 {
5 ...
6 }
7 //正确代码
8 if(string.IsNullOrEmpty(userName)||userName.Trim()=="")
9 {
10 ...
11 }

 二、日期错误

最近这个项目要算时间差,分别在C#里算和SQL里算,

C#: (时间1-时间2).days

SQL:diffdate(d,时间2,时间3)

结果,算出来的天数不一样,当时自测力度不够,居然没有注意到。原来sql里这么写,2011-09-20 0:0:0 到2011-09-20 23:59:59 结果是0天。

但是2011-09-20 23:59:59 到2011-09-21 0:0:01却是一天....d代表只用天数相减,晕得死。。。

改进:精却到分钟diffdate(mi,时间2,时间3)/1440
 

三、F5和Ctrl+F5

今天在学习CLR内存处理时,看到网上有篇文章说只要在Main方法前加上[LoaderOptimization(LoaderOptimization.MultiDomain)] 就可以将自己写的程序集加入到共享域中,就像Int一样。我照着方法试了,可怎么也不灵,最后问了博主,他说按Ctrl+F5就可以了,我试了试还真可以。后来在网上查,有很多朋友都说F5认不到[],不知道为什么,反正就是F5可以认不到[]中的东西,以后调试时还是多注意下Ctrl+F5(不调试直接启动)吧,有可能调试通过了,但直接运行有问题。 

posted on 2011-09-15 11:08  Jimmy.x.zhou  阅读(303)  评论(0编辑  收藏  举报

导航