Posso modificare il codice durante l'aggiunta della registrazione?

2

Quando aggiungo il logging (ad esempio log4j2 in Java) al codice esistente, va bene (buona pratica), modificare il codice?

Considera il seguente esempio:

 //if process returned 0 return true
 return (returnCode == process.waitFor());

Questa costruzione è piuttosto ordinata, ma quando voglio aggiungere la registrazione e voglio usare due diversi livelli di registrazione ( DEBUG vs ERROR ) a seconda del codice di ritorno del processo, può cambiare in qualcosa così:

int returnCode = process.waitFor();

if(returnCode == 0)
{
    logger.debug("Command returned code 0");
}
else
{
    logger.error("Command returned code: ");
}
return (returnCode == 0);

Un altro esempio potrebbe essere:

...
throw new UnsupportedOperationException("Unknown message: " + message.toString());

modificato in:

String errorMsg = "Unknown message: " + message.toString();
logger.error(errorMsg);
throw new UnsupportedOperationException(errorMsg);

È necessario alterare il codice per aggiungere registri accettabili? Ci sono delle linee guida su come farlo?

    
posta nuoritoveri 18.03.2016 - 08:04
fonte

2 risposte

5

In generale, sì, ovviamente puoi modificare il codice per aggiungere la registrazione. Se la registrazione era stata parte del progetto dall'inizio, come sarebbe stato scritto il codice?

Ci sono delle eccezioni a ogni regola, ma queste dipendono dalla situazione, è fuori dal campo di applicazione per discutere qui. (Considerare un problema di produzione critico in cui è necessario aggiungere la registrazione per diagnosticare il problema. Probabilmente è prudente attendere fino alla risoluzione del problema prima di apportare modifiche al codice oltre l'aggiunta della registrazione necessaria).

Nel primo esempio, probabilmente aggiungerei una funzione logProcessResult(...) per evitare di dover considerare che if / else costruisca dappertutto solo per scopi di logging.

Il secondo esempio è più complicato ... non è sempre il caso che l'eccezione e il registro contengano lo stesso contenuto, specialmente se l'eccezione può essere visibile pubblicamente mentre il registro non lo è. Tuttavia, separare la stringa consente la localizzazione del messaggio, quindi non è comunque una cattiva idea.

    
risposta data 18.03.2016 - 08:38
fonte
-1

Le migliori pratiche per gestire il tipo di registrazione dei problemi trasversali tramite AspectJ / AOP e gestire il parametro di input e la registrazione dei risultati da un unico punto. Ciò migliorerà la manutenibilità del codice.

    
risposta data 18.03.2016 - 13:21
fonte

Leggi altre domande sui tag