Раздражающий формат для функций - PullRequest
0 голосов
/ 13 февраля 2012

Я начал работать с большой кодовой базой, и большая часть кода была настроена со странным форматом для функций. более или менее каждая функция имеет следующий формат

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

Я не вижу смысла в том, чтобы настаивать на том, чтобы более или менее обернуть всю работу функции в попытке. Это что-то вроде «лучшей практики», о которой мне никогда не рассказывали?

EDIT:

возможно, я должен был сказать, но два вызова trace_messages() на самом деле разные части кода, но более или менее одинаковы ... если вы понимаете мой смысл

Ответы [ 2 ]

2 голосов
/ 13 февраля 2012

Целью этого кода было убедиться, что trace_messages() гарантированно будет выполнено в начале и до конца foo().

finally гарантированно выполняется как в случае, если все работает нормально, так и в случае, если код внутри try с треском проваливается с некоторым неприятным необработанным исключением времени выполнения.

Я согласен, что формат, выбранный для достижения этого намерения, не самый лучший, обычно это делается с помощью некоторого вида АОП, весной вы бы включили foo() в Вокруг совета .

1 голос
/ 13 февраля 2012

Найдите определение trace_messages(), и вы увидите, что пытался сделать последний парень. Если вы используете IDE, например Eclipse, щелкните правой кнопкой мыши на trace_messages(), и должна быть возможность перейти непосредственно к определению.

...