2

多くの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
}

ロギングのためだけにtryfinallyブロックを作成した場合、何か影響はありますか?ベストプラクティスは何ですか?

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 に答える