Questo è un Q correlato: È l'uso di finalmente clausola per fare il lavoro dopo aver restituito uno stile non valido / pericoloso?
Nel Q di riferimento, il codice finale è correlato alla struttura utilizzata e alla necessità di prelettura. La mia domanda è un po 'diversa, e credo che sia pertinente per il pubblico più ampio. Il mio esempio particolare è un'app winform C #, ma questo si applicherebbe anche all'uso C ++ / Java.
Sto notando alcuni blocchi try-catch-finally in cui c'è un sacco di codice non correlato alle eccezioni e alla gestione delle eccezioni / pulizia sepolto all'interno del blocco. E ammetterò il mio pregiudizio verso blocchi molto stretti di try-catch-finally con il codice strettamente correlato all'eccezione e alla gestione. Ecco alcuni esempi di ciò che sto vedendo.
I blocchi di prova avranno un sacco di chiamate preliminari e variabili impostate che portano al codice che potrebbe lanciare. Le informazioni di registrazione verranno configurate ed eseguite anche nel blocco try.
Infine i blocchi avranno chiamate form / modulo / controllo di formattazione (nonostante l'app sta per terminare, come espresso nel blocco catch), così come la creazione di nuovi oggetti come i pannelli.
Approssimativamente:
methodName( ... ) { try { // Lots of code for the method ... // code that could throw ... // Lots more code for the method and a return ... } catch( something ) { // handle exception } finally { // some cleanup due to exception, closing things // more code for the stuff that was created (ignoring that any exceptions could have thrown) ... // maybe create some more objects } }
Il codice funziona, quindi c'è un certo valore. Non è ben incapsulato e la logica è un po 'contorta. Conosco (dolorosamente) i rischi legati allo spostamento del codice e al refactoring, quindi la mia domanda si riduce a voler conoscere l'esperienza degli altri con un codice strutturato in modo simile.
Lo stile cattivo giustifica la realizzazione delle modifiche? Qualcuno è stato gravemente ustionato da una situazione simile? Ti andrebbe di condividere i dettagli di quella brutta esperienza? Lascia che sia perché sto reagendo in modo eccessivo e non è così male di stile? Ottieni i vantaggi di mantenimento del riordinamento?