权限管理、用户权限系统、开源用户权限系统、信息化建设标准基础数据管理平台
代码改变世界

什么叫水平,不是看懂了叫水平,也不是会用了就叫水平,更不是懂得更多才叫有水平,而是知道如何做才能做得更好才叫真正有水平?

2009-12-19 13:00  通用C#系统架构  阅读(2095)  评论(20编辑  收藏  举报

   其实有很多同事、朋友、同行,水平个个都很强的,写程序也很快,但是他们有一个共同的缺点,就是懂得太多、想法太多、想做得太多但是仔细认真做得太少、做得精的太少、经得起考验的更少、真正可以实际应用可以广泛推广的就更少。

   很多人都喜欢大谈SOA、IOC、ORM等等,但是对手上的眼前的程序代码却没有多少兴趣爱好,也懒得深入研究优化自己的程序,这几年深刻的意识到,眼前的才是真,真正在用的程序才是真,其他都是虚假飘渺的,把给客户用的实实在在的程序写得最好、性能最好,用起来好用,符合客户的实际需求才是真理。

  

   打个比方,曾经我写了一个函数,一直用得蛮好的,自己认为已经写得非常好了,同事们也没在其中找出来过多少Bug,我们在日常开发中天天也在用,所以我想把这个类发布给大家用用,提高一下大家的品质,发布到网络上后,很多人有下载,也有人在用,也有人反馈过错误,但是其中我很佩服一个人“卢骐征”,这个人应该是仔细看了我的代码,然后给我指出:“吉日,你的代码还可以优化,有一个地方你可以这么改进一下......”。

   我太佩服这样的人了,我不是想跟别人大谈什么这个牛B技术、那个牛B技术,我就想实实在在知道,我的程序还有什么问题,哪里还可以怎么改进?如何写代码才更好用,更好读,别人用起来更方便?

 

   例如我写的一个获得参数的函数:

代码
 1         #region public DbParameter MakeInParam(String targetFiled, Object targetValue)
 2         /// <summary>
 3         /// 获取参数
 4         /// </summary>
 5         /// <param name="targetFiled">目标字段</param>
 6         /// <param name="targetValue"></param>
 7         /// <returns>参数</returns>
 8         public DbParameter MakeInParam(String targetFiled, Object targetValue)
 9         {
10             SqlParameter dbParameter = null;
11             // dbParameter = new SqlParameter("@" + targetFiled, targetValue);
12             if (targetValue == null)
13             {
14                 return dbParameter;
15             }
16             if (targetValue is String)
17             {
18                 dbParameter = new SqlParameter("@" + targetFiled, SqlDbType.VarChar);
19             }
20             else
21             {
22                 if (targetValue is Boolean)
23                 {
24                     dbParameter = new SqlParameter("@" + targetFiled, SqlDbType.Bit);
25                 }
26                 else
27                 {
28                     if (targetValue is DateTime)
29                     {
30                         dbParameter = new SqlParameter("@" + targetFiled, SqlDbType.DateTime);
31                     }
32                     else
33                     {
34                         if (targetValue is int)
35                         {
36                             dbParameter = new SqlParameter("@" + targetFiled, SqlDbType.Int);
37                         }
38                         else
39                         {
40                             if (targetValue is Int64)
41                             {
42                                 dbParameter = new SqlParameter("@" + targetFiled, SqlDbType.BigInt);
43                             }
44                             else
45                             {
46                                 if (targetValue is Double)
47                                 {
48                                     dbParameter = new SqlParameter("@" + targetFiled, SqlDbType.Decimal);
49                                 }
50                                 else
51                                 {
52                                     if (targetValue is Byte[])
53                                     {
54                                         dbParameter = new SqlParameter("@" + targetFiled, SqlDbType.Binary);
55                                     }
56                                     else
57                                     {
58                                         dbParameter = new SqlParameter("@" + targetFiled, SqlDbType.VarChar);
59                                     }
60                                 }
61                             }
62                         }
63                     }
64                 }
65             }
66             dbParameter.Value = targetValue;
67             return dbParameter;
68         }
69         #endregion

   当时也费了不少周折,把这个函数写好,大家用用也很好用,但是我发布到网上后,人家(“卢骐征”)有水平的人就说了,这个可以改进优化,没必要写这么长,这就叫做水平,牛X啊,我佩服。

   不是把程序写出来了,就叫厉害了,更厉害的是如何写才是最好、性能更高,更好用、更简洁,我按他的指导意思改进了程序的写法,变成了如下几行代码。

代码
 1         #region public DbParameter MakeInParam(String targetFiled, Object targetValue)
 2         /// <summary>
 3         /// 获取参数
 4         /// </summary>
 5         /// <param name="targetFiled">目标字段</param>
 6         /// <param name="targetValue"></param>
 7         /// <returns>参数</returns>
 8         public DbParameter MakeInParam(String targetFiled, Object targetValue)
 9         {
10             SqlParameter dbParameter = new SqlParameter("@" + targetFiled, targetValue);
11             dbParameter.Value = targetValue;
12             return dbParameter;
13         }
14         #endregion

   以前写的几十行代码,只变成了3行代码就可以了,过了一夜,我再想想很有可能,其中的两行代码也是多余的,应该是写一行代码就可以了,先做一个测试,改进后的代码是:

代码
 1         #region public DbParameter MakeInParam(String targetFiled, Object targetValue)
 2         /// <summary>
 3         /// 获取参数
 4         /// </summary>
 5         /// <param name="targetFiled">目标字段</param>
 6         /// <param name="targetValue"></param>
 7         /// <returns>参数</returns>
 8         public DbParameter MakeInParam(String targetFiled, Object targetValue)
 9         {
10             return new SqlParameter("@" + targetFiled, targetValue);
11         }
12         #endregion

   哎呀,几十行的代码,用得也很稳定的代码,其实就写一行代码就可以了,这就叫真水平,让别人也看看自己的代码,检查检查,不是自己觉得好了就是真好,别人都说好才是好,心理舒坦了很多,优化了代码,也感谢卢骐征的指点。

 

   虽然他半年前就告诉我问题在哪里了,我也没马上修改,因为还需要考虑稳定性,自己是否有空有精力去修改,这几天正好心情好,把半年前人家提供的改进好了,心理也好舒坦。

   很多改进未必是当场就改进,但是觉得应该这么改是对的,那就早晚会修正好,问题毕竟还需要按轻重缓急的顺序来一个个解决。

 

   实实在在的水平就在于:“请告诉我,我应该怎么做才能做得更好,我的程序哪里有问题?如何改进?怎么写才是更好的?”,不要告诉我,去看RBAC吧,CMMI吧,请给我明确的指点,我不是神,你说个ISO、PMP什么的,我是根本不懂的我自己也学不了,没那个水平。

 

 

 



C# ASP.NET 通用权限设计、通用权限管理、通用权限组件、单点登录、集中式权限管理、统一授权体系、分级管理分级授权


微信扫一扫加好友