垃圾代码是这样练成的......

很多人喜欢在网上,论坛里,QQ群里,向别人要代码...... 而我个人习惯,不太喜欢看别人代码,因为扔在论坛上的代码,虽然也有精品的,但是大多是新手练手,每每有看到哭笑不得的代码. 所以一般只看运行,看代码也就看看结构,层次.
可是工作中,却每每需要去看别人的代码.....今天就遇到一个极品垃圾代码...
一个类里面接近900行代码....线程不安全也就算了,真正能用的代码,不足一半,而那不足一半的代码中,几乎全是垃圾. 让人苦笑.

举几个例子,也算给大家乐一乐,对新手也好引以为戒. 人都是新手走来的,都犯过低级错误,关键是不要有下次.

1, 获取上个星期的今天.  用了长长的代码, 首先新建了SqlConnectin和SqlCommand, SqlDataAdapter.....然后从数据库执行"SELECT getdate()" 语句,得到一个DataSet, 然后从这个DataSet的Tables[0].Rows[0][0] 得到一个代码当前日期的object, 为了转成DataTime ,使用了DateTime.Parse(),而这个方法需要string,所以又ToString()了一下...... ....然后再费尽方法,在上面去掉了1星期.........
其实大家都知道,这本非常简单的一句就够了

DateTime.Today.AddDays( - 7 )


2,获取本月的最后一天. 比上面更夸张.....整整用了近100行代码.....
 1          /// <summary>
 2        /// 获取当月的月未时间 如:20051130
 3        /// </summary>
 4        /// <returns></returns>

 5          public   static  DateTime GetMonthEnd(DateTime dt)
 6          {
 7            DateTime EndDate;
 8            string strYear, strMonth, strDay;
 9            strYear = dt.Year.ToString();
10            strMonth = (dt.Month > 9? dt.Month.ToString() : "0" + dt.Month.ToString();
11            strDay = GetDaysOfMonth(dt).ToString();
12            string strDate = strYear + "-" + strMonth + "-" + strDay;
13            EndDate = Convert.ToDateTime(strDate);
14            return EndDate;
15            
16          
17        }

18
19          /// <summary>本月有多少天</summary>
20        /// <param name="dt">日期</param>
21        /// <returns>天数</returns>

22          private   static   int  GetDaysOfMonth(DateTime dt)
23          {
24            int year, month, days = 0;
25            year = dt.Year;
26            month = dt.Month;
27
28            //--利用年月信息,得到当前月的天数信息。
29            switch (month)
30            {
31                case 1:
32                    days = 31;
33                    break;
34                case 2:
35                    if (IsRuYear(dt))
36                    {
37                        days = 29;
38                    }

39                    else
40                    {
41                        days = 28;
42                    }

43
44                    break;
45                case 3:
46                    days = 31;
47                    break;
48                case 4:
49                    days = 30;
50                    break;
51                case 5:
52                    days = 31;
53                    break;
54                case 6:
55                    days = 30;
56                    break;
57                case 7:
58                    days = 31;
59                    break;
60                case 8:
61                    days = 31;
62                    break;
63                case 9:
64                    days = 30;
65                    break;
66                case 10:
67                    days = 31;
68                    break;
69                case 11:
70                    days = 30;
71                    break;
72                case 12:
73                    days = 31;
74                    break;
75            }

76
77            return days;
78
79        }

80
81          /// <summary>判断当前日期所属的年份是否是闰年</summary>
82        /// <param name="dt">日期</param>
83        /// <returns>是闰年:True ,不是闰年:False</returns>

84          private   static   bool  IsRuYear(DateTime idt)
85          {
86            int n;
87            n = idt.Year;
88
89            if ((n % 400 == 0|| (n % 4 == 0 && n % 100 != 0))
90            {
91                return true;
92            }

93            else
94            {
95                return false;
96            }

97        }

其实只需要1句:
DateTime.Parse(dt.ToString( " yyyy-MM-01 " )).AddMonths( 1 ).AddDays( - 1 ); 
下个月1号向前走一天就是这个月最后一天了.

整个类的各种方法代码中稀奇古怪的什么都有, 其实只是希望提醒一些新手,写代码注意思考.
http://syeerzy.cnblogs.com/archive/2006/03/09/346726.html
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值