2

考虑一种情况,需要记录具有大量返回语句的方法,而不是执行,

    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 块只是为了记录日志,会有什么影响吗?最佳做法是什么?

4

3 回答 3

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
于 2013-02-06T14:47:38.040 回答
0

作为一个纯粹主义者,我会说将业务逻辑与错误处理混合在一起总是一种不好的做法。此外,由于这是象牙塔的观点,将横切关注点(日志记录)与业务逻辑混合也是一种不好的做法。

我会以此为目标...

if(condition1)
    {
      calculation here
       result = a
    }
    else if(condition2)
    {
      calculation here
      result = b
    }
    else 
    {
      calculation here
      result = c
    }      
    log stuff
    return result          
于 2013-02-06T14:48:26.950 回答
-1

有多个 return 语句被认为是不好的风格 --> 看程序流程很复杂。(在这么小的方法中并不是真正的问题,但它会降低可读性)

因此,请考虑在计算块中设置一个 returnValue,该值将在最后返回。

这允许您在返回之前的某个时间点进行日志记录。

于 2013-02-06T14:52:06.353 回答