我已经开始使用大型代码库了,许多代码已经设置了一个奇怪的函数格式。或多或少每个函数都有以下格式
foo(){
trace_messages()
// this is what I don't get
try{
// all code goes here
} finally {
trace_messages()
}
}
在尝试包含或多或少包含整个函数工作的背后,我看不出任何意义。这是我从未被告知的某种“最佳实践”吗?
编辑:
也许我应该说,但对trace_messages()
的两次调用实际上是代码的不同部分,但是或多或少相同......如果你遵循我的意思
答案 0 :(得分:2)
该代码的目的是确保trace_messages()
保证在foo()
的开始和结束之前执行。
finally
保证在一切运行正常的情况下执行,并且try
内的代码在一些令人讨厌的未捕获的运行时异常中失败。
我同意为达到这个目的而选择的格式不是最好的,通常用某种AOP来完成,在Spring中你可以将foo()
包裹到Around advice。
答案 1 :(得分:1)
找到trace_messages()
的定义,你会看到最后一个人想要做什么。如果您使用的是像Eclipse这样的IDE,请右键单击trace_messages()
,并且应该有一个选项可以直接跳转到定义。