考虑需要记录具有大量return语句的方法的情况, 而不是做,
if(condition1)
{
calculation here
do log
return a
}
else if(condition2)
{
calculation here
do log
return b
}
else
{
calculation here
do log
return c
}
如果日志语句相同,以这种方式记录会更好吗?
try
{
if(condition1)
{
calculation here
return a
}
else if(condition2)
{
calculation here
return b
}
else
{
calculation here
return c
}
}
finally
{
do log
}
如果我们创建一个try finally块来记录日志会有什么影响吗?什么是最佳做法?
答案 0 :(得分:2)
为什么不像这样只返回
var returnValue
if(condition1)
{
calculation here
returnValue = a
}
else if(condition2)
{
calculation here
returnValue = b
}
else
{
calculation here
returnValue = c
}
do log
return returnValue
答案 1 :(得分:0)
要成为一个纯粹主义者,我会说将业务逻辑与错误处理混合起来总是不好的做法。此外,由于这是象牙塔的视图,因此将横切关注点(日志记录)与业务逻辑混合也是一种不好的做法。
我的目标是......
if(condition1)
{
calculation here
result = a
}
else if(condition2)
{
calculation here
result = b
}
else
{
calculation here
result = c
}
log stuff
return result
答案 2 :(得分:-1)
它被认为是具有多个返回语句的坏风格 - >很难看到程序流程。 (这种小方法确实不是问题,但会降低可读性)
所以考虑在计算块中设置一个returnValue,它将在最后返回。
这允许您在返回之前的某个点进行记录。