È standard per registrare ogni caso di un'istruzione switch?

1

Qualche codice che ho scritto mi è stato restituito durante la peer review, dicendomi di aggiungere il logging all'inizio di ogni caso in un'istruzione switch in un servlet (Java, se questo è importante), quindi se qualcosa va storto, possiamo vedere dove Ho capito che non ha senso, dato che registriamo comunque intere tracce di stack, ma la risposta che ho ottenuto è stata

"It's standard practise throughout the entire industry."

Non hanno avuto il tempo di discutere, il che è abbastanza giusto, e farò quello che dicono. Ma questa non è stata la mia esperienza in altre società. Voglio solo sapere, è davvero una specie di pratica standard? A cosa serve?

Come esempio di cosa intendo:

switch (task) {
    case VIEW:
        logger.info("inside VIEW for taskPage");
        {...}

    case EDIT:
        logger.info("inside EDIT for taskPage");
        {...}
    
posta AlbeyAmakiir 28.06.2017 - 08:54
fonte

1 risposta

3

Se è una cattiva pratica.

Penso che sia giusto dire che c'è un sacco di questo tipo di "debug logging". Con ciò intendo la registrazione che consente di seguire il flusso della logica attraverso il codice.

Tuttavia, la ragione per cui dico che è una brutta cosa è che:

  • È quasi impossibile registrare informazioni sufficienti per mostrarti l'intero flusso. Vedrai persone che registrano il nome del metodo e tutti i parametri su ciascun metodo, ad esempio, e vogliono ancora questo tipo di registrazione del ramo condizionale
  • Anche una piccola quantità di questo tipo di registrazione genera enormi volumi di log. Anche se incontri una situazione anomala, trovarla sarà un incubo
  • Dovrebbe essere possibile seguire la logica tramite il vero debugging, che ti dà una visione molto più approfondita di ciò che sta succedendo che prova ad interpretare i log.

Invece, prova a registrare le cose da fare (input) e i risultati delle cose fatte (output). Ciò consente di individuare risultati insoliti e, se necessario, riprodurli in un test di integrazione.

es. Registra ordinePlaced {orderstate} e OrderProcessed {orderstate}

Evita di registrare i non errori all'interno della tua logica aziendale, ad es. "riduzione del prezzo del 2% perché è una vendita"

    
risposta data 28.06.2017 - 10:04
fonte

Leggi altre domande sui tag