当前位置: 首页 > web开发 > ASP.NET > 正文

谈谈几个编程习惯

时间:2011-03-19 博客园 姜敏

一个人的成功有时往往体现在细节上,而习惯往往是这些细节的具体表现形式,这里我也想总结几个不太好的编程习惯。

第一:int初始化的控制,对数据初始值的理解问题。下面的一段程序大概的意思就是,页面上有一个属性HighPrice,它最终会通过ViewState保存在页面中,如果ViewState为空,则设置属性HighPrice的值为-1,否则直接读取ViewState中的值。但实际情况并不是这样,程序在初始化时,HighPrice的初始值为0,所以下面的代码永远得不到-1。

public int HighPrice {
  get
  {
    if (ViewState["HighPrice"] != null)
       return (int)ViewState["HighPrice"];
    else
       return -1;
  }
   set
   {
       ViewState["HighPrice"] = value;
   }
}

解决方案:下面给出相对正确的写法。大家如果有更好的写法可以提出参考下。

private int _HighPrice = -1;
        public int HighPrice
        {
            get
            {
                if (null != ViewState["HighPrice"])
                {
                  int.TryParse(ViewState["HighPrice"].ToString(), out _HighPrice);
                }
                return this._HighPrice;
            }
            set
            {
                this._HighPrice = value;
                if (null == ViewState["HighPrice"])
                {
                    this._HighPrice = -1;
                }
                //把变量值保存到ViewState中
                ViewState["HighPrice"] = this._HighPrice;
            }
        }

第二:对于多条件的判断,最典型的要数&&操作符了。如果一个语句的执行需要同时满足两个条件,我们经常会这样写:if(条件一&&条件二),意图是认为条件一和条件二都等于true的情况下,但实际情况是如果两人条件都是false,那么最后的条件一&&条件二的结果刚好也是true,此时就会出现不可预测的错误。而且这种错误也是非常难查找的。有时候写代码能省就省,不能省的一个也不能少。

说明:此条对C#不成立,但其它的语言就不一定,大家可以测试下。

第三:对于if语句的写法。我们大多会这样写:if(条件==true),正常情况下是没有问题,但有时会写成if(条件=true),也就是程序员在写的时候少写了一个等号,造成程序永远执行下面的代码,这种错误查找起来也是相当困难的,因为编译器在编译时并不会报错。

解决方案:

1:可以这样写if(true==条件),如果你写成了if(true=条件),编译器会报错,因为true是不能充当左值的。

2:如果只有一个条件,就直接if(条件),把==true给省略即可,如果是多条件就按方法一来执行。

说明:if(true=条件)这种程序当然并不是程序员想这要写,只是有时会少写一个而已。