如果在一个班级A:
Class A
public List<string> getValues
Run Code Online (Sandbox Code Playgroud)
如果我想调用该方法,我应该总是检查返回值是否为空?虽然我不认为它可能是null(应该是一个空列表).即
Class B
public void GetSomething
foreach (var thing in A.getValues)
//do something....
Run Code Online (Sandbox Code Playgroud)
要么
Class B
public void GetSomething
var things = A.getValues;
if (things != null)
foreach (var thing in things)
//then doing something....
Run Code Online (Sandbox Code Playgroud)
提出这个问题的原因是,当我编写单元测试时,我在A类中使该方法返回null而不是空列表,但是如果它发生的话我在现实生活中不知道,因为如果它可以为null那么它总是好的检查而不是尝试捕获异常,哪一个更合适?
我通过提供相应的公共财产将一些公共领域改为私人.
例如:
public string Name;
Run Code Online (Sandbox Code Playgroud)
改变了
private string _name;
public string Name
{
get{ return _name;}
set{ _name = value;}
}
Run Code Online (Sandbox Code Playgroud)
但是,原始公共字段的[XmlAttribute]属性呢?即
[XmlAttribute]
public string Name;
Run Code Online (Sandbox Code Playgroud)
变为:
[XmlAttribute]
private string _name;
public string Name
{
get{ return _name;}
set{ _name = value;}
}
Run Code Online (Sandbox Code Playgroud)
要么
private string _name;
[XmlAttribute]
public string Name
{
get{ return _name;}
set{ _name = value;}
}
Run Code Online (Sandbox Code Playgroud) 这里有时间复杂性问题:
for i = 1 to n
if something
p = p*c
c = c*c
Run Code Online (Sandbox Code Playgroud)
对于第1行,时间复杂度应为n,但第3行和第4行呢?是n ^ 2?还是n ^ n?