令人讨厌的功能格式

时间:2012-02-13 11:30:08

标签: java coding-style try-catch

我已经开始使用大型代码库了,许多代码已经设置了一个奇怪的函数格式。或多或少每个函数都有以下格式

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

在尝试包含或多或少包含整个函数工作的背后,我看不出任何意义。这是我从未被告知的某种“最佳实践”吗?

编辑:

也许我应该说,但对trace_messages()的两次调用实际上是代码的不同部分,但是或多或少相同......如果你遵循我的意思

2 个答案:

答案 0 :(得分:2)

该代码的目的是确保trace_messages()保证在foo()的开始和结束之前执行。

finally保证在一切运行正常的情况下执行,并且try内的代码在一些令人讨厌的未捕获的运行时异常中失败。

我同意为达到这个目的而选择的格式不是最好的,通常用某种AOP来完成,在Spring中你可以将foo()包裹到Around advice

答案 1 :(得分:1)

找到trace_messages()的定义,你会看到最后一个人想要做什么。如果您使用的是像Eclipse这样的IDE,请右键单击trace_messages(),并且应该有一个选项可以直接跳转到定义。