2012-02-13 26 views
0

私は大きなコードベースで作業を始めました。多くのコードは、関数のために奇妙なフォーマットでセットアップされています。多かれ少なかれ、すべての機能は、次の形式関数のための厄介なフォーマット

foo(){ 
    trace_messages() 
    // this is what I don't get 
    try{ 
      // all code goes here 
    } finally { 
      trace_messages() 
    } 
} 

を持っている私は、tryで機能の多かれ少なかれ作品全体を包むの主張の背後にどんな意味を見ることができません。これは一種の「ベストプラクティス」なのですか?

EDIT:

おそらく私が述べてきたはずですが、trace_messages()への2つのコールが実際にコードの異なるセクションですが、多かれ少なかれ同じ...あなたは私の意味に従うならば

答えて

2

trace_messages()が最初に実行され、末尾がfoo()になることを保証することを目的としています。

finallyは、すべてが正常に動作し、tryのコードが不快なキャッチされていない実行時例外で惨めに失敗した場合にも両方が実行されることが保証されています。

私は、この意図を達成するために選択されたフォーマットが最良ではないことに同意します。通常、AOPの何らかの種類で行われますが、foo()Around adviceにラップします。

1

は、定義を探しますtrace_messages()の最後の男が何をしようとしていたかがわかります。 EclipseのようなIDEを使用している場合は、trace_messages()を右クリックして、定義に直接ジャンプするオプションが必要です。

+0

ところで、いいえ、「ベストプラクティス」のようなものではありません。 –

+0

同意します。コーダーは 'trace_messages'が常に最初と最後に呼び出されるようにしています。私にはAOPのように聞こえる。 –

+0

確かに、それはベストプラクティスではありません。それはOKの練習ではありません。さらに、 'try'ブロック内で実行されるすべてのコードは遅くなります。 –

関連する問題