Domanda

È saggio lasciare Trace.Assert e Debug.Assert nel codice che è "stabile"? e quale è stato spostato negli ambienti di test e produzione?

In tal caso, in che modo aiutano queste dichiarazioni di asserzione? Non è sufficiente che le classi Guard, ecc. Controllino le condizioni delle eccezioni e aumentino le eccezioni nel modo appropriato?

È stato utile?

Soluzione

Le

Debug.Assert verranno ignorate se non si dispone del DEBUG costante di compilazione definita, che per impostazione predefinita si verifica quando si compila nel "debug" configurazione e non in " versione " configurazione. In effetti, si prevede che la classe Debug sia utilizzata solo negli ambienti di test, in cui si suppone che si verifichino tutti (o almeno la maggior parte) dei bug che causerebbero il fallimento di Debug.Assert.

Trace.Assert funziona allo stesso modo, tranne che per la compilazione costante che deve esistere è TRACE, che per impostazione predefinita esiste sia in "debug" e "rilascio" configurazioni. Può avere senso avere asserzioni di traccia nel codice di rilascio, ma di solito è preferibile che facciano qualcosa di diverso dal comportamento predefinito del metodo (che visualizza solo una finestra di messaggio con la traccia dello stack). È possibile ottenere ciò configurando un listener di traccia personalizzato per la classe Trace; consultare la documentazione del metodo per maggiori dettagli.

Altri suggerimenti

Il passaggio all'ambiente Prod è un inizio, non una fine della vita del programma. Una volta che incontra utenti reali e mondo reale, inizierai a ricevere molti feedback in merito problemi e bisogni che non avevi previsto. Ciò significa che lo sviluppo è appena iniziato. Avrai bisogno delle tue affermazioni sul posto per aiutarti a catturare le ipotesi infrante in anticipo (prima creano molti problemi) e per aiutarti ad estendere e cambiare il tuo programma.

Uno dei vantaggi di Assert over exception è che probabilmente non verrà rilevata un'eccezione nel luogo in cui si verifica il problema. Ma Assert accade sempre nel posto giusto.

Un altro vantaggio di Assert che mi viene in mente è che ti aiuta a eseguire il debug nell'ambiente di produzione. Le asserzioni ancora attive nel codice di rilascio possono essere acquisite in fase di esecuzione in modo dinamico con strumenti adeguati, come DbgView . Questo è molto comodo per il debug dopo il rilascio del prodotto.

http://technet.microsoft.com/en-us/sysinternals /bb896647.aspx

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top