logging:在日志方法start和end中使用try-filly块是否可以接受

本文关键字:try-filly 是否 日志 方法 start end logging | 更新日期: 2023-09-27 17:57:52

考虑一种情况,其中需要记录一个包含大量返回语句的方法,

    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-filly块,会有什么影响吗?最佳实践是什么?

logging:在日志方法start和end中使用try-filly块是否可以接受

为什么不像这个一样在最后返回

var returnValue
if(condition1)
{
  calculation here
  returnValue = a
}
else if(condition2)
{
  calculation here
  returnValue = b
}
else 
{
  calculation here
  returnValue = c
}         
do log
return returnValue

作为一个纯粹主义者,我认为将业务逻辑与错误处理混合在一起总是一种糟糕的做法。此外,由于这是来自象牙塔的观点,将交叉关注(日志记录)与业务逻辑混合也是一种糟糕的做法。

我的目标是。。。

if(condition1)
    {
      calculation here
       result = a
    }
    else if(condition2)
    {
      calculation here
      result = b
    }
    else 
    {
      calculation here
      result = c
    }      
    log stuff
    return result          

让多个返回语句-->复杂地查看程序流被认为是一种糟糕的风格。(在这么小的方法中并不是一个真正的问题,但它降低了可读性)

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

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

相关文章: