以下是 C#,尽管代码模式可能与任何 OO 语言相关。
我有两种方法,MethodWithTry 和 MethodWithSomeReturnValue,我认为它们在功能上是等效的。我想知道其中一个是否是“正确”的方式。是否有一些东西(例如并发)使它们中的一个成为一个糟糕的选择。
public void MethodWithTry()
{
int returnValue;
string someInput;
if (TryGetValueThisWay(someInput, returnValue))
{
//do something this way
}
else
{
if (TryGetValueThatWay(someInput, returnValue))
{
//do something that way
}
else
{
//do something a default way
}
}
}
public void MethodWithSomeReturnValue()
{
int? returnValue;
string someInput;
returnValue = GetValueThisWay(someInput);
if (returnValue != null)
{
//do something this way
}
else
{
returnValue = GetValueThatWay(someInput);
if (returnValue != null)
{
//do something that way
}
else
{
//do something a default way
}
}
}
被调用方法的签名是
public int? GetValueThisWay(string input)
public int? GetValueThatWay(string input)
private bool TryGetValueThisWay(string input, out int value)
private bool TryGetValueThatWay(string input, out int value)
编辑——附加信息
被调用的方法是在集合中进行查找。所以可能有不同的名字
public int? GetValueFromCollectionA()
public int? GetValueFromCollectionB()
恕我直言,TrySomeMethodName - 使代码更具可读性。但是,使用 OUT 变量,尤其是当返回值为整数时,意味着它始终是可变的并且至少分配了两次(默认设置为 0)。