关于返回值
数组,一定不能返回NULL
Object[] F1()
{
//do something
return null; //灾难
}
{
//do something
return null; //灾难
}
上面的代码可能导致灾难性的后果。极少有人这样使用你的函数的。
Object[] objArray = F1();
if (objArray != null)
{
for (int i = 0; i < objArray.Length; ++i)
{
//do something
}
}
if (objArray != null)
{
for (int i = 0; i < objArray.Length; ++i)
{
//do something
}
}
你应该这样写F1函数:
Object[] F1()
{
//do something
return new Object[0];
}
{
//do something
return new Object[0];
}
集合,也不能返回NULL
ICollection F1()
{
//do something
return null; //灾难
}
{
//do something
return null; //灾难
}
你应该这样写:
ICollection F1()
{
//do something
return new ArrayList(0);
}
{
//do something
return new ArrayList(0);
}
字符串,有时候也不能返回NULL
如果你编写一个WebControl,有如下代码:
public String Text
{
get
{
return null; //不好,可能导致灾难
}
}
{
get
{
return null; //不好,可能导致灾难
}
}
这样不好,下面的方式可能更好:
public String Text
{
get
{
if (this.text == null)
{
return String.Empty;
}
return this.text;
}
}
{
get
{
if (this.text == null)
{
return String.Empty;
}
return this.text;
}
}
字符串很多情况下还是可以返回NULL值的,具体情况需要具体分析。
总结
这都是很简单的规则,必须掌握。以上规则,可以运用在代码评审中。从以前参加代码评审的经验来看,还是有不少初学者犯这类错误的。