handle errors and exceptions
Gestisci le eccezioni da cui puoi recuperare. Invia quelli che non puoi.
Un file non trovato è un problema ma ha bisogno di distruggere tutto il lavoro che l'utente ha fatto? Dì loro che non potevano caricare quello che stavano cercando di caricare. D'altra parte, se un'eccezione lascia il sistema in uno stato strano, non peggiorare le cose catturandole e fingendo che le cose vadano bene quando non lo sono. Se non puoi prevedere cosa succederà al prossimo lancio e morte.
best practices to avoid Software crashing, hanging or freezing
Non perdete memoria.
Ciò che rende gli sviluppatori di software per server straordinari è la loro capacità di creare software in grado di funzionare per mesi senza bisogno di un riavvio. Ciò che rende i sistemi Linux così sorprendenti è la loro capacità di funzionare per mesi senza bisogno di un riavvio.
Se perdi memoria, il tuo software non è sorprendente. Avrà bisogno di un riavvio. Anche in C # questo può succedere. Certo, ha un netturbino, ma tutto ciò che devi fare è tenere un riferimento a qualcosa per più tempo del necessario ed è una perdita. Il garbage collector non ti aiuterà qui. Se questa cosa viene creata "come necessario", sei in grossi guai perché continuerai a farne di più e non butterai mai via la vecchia merda.
Il modo stupido e semplice per rilevare alcune di queste perdite è controllare la tua app eseguita nel task manager. Che cosa fa l'uso della memoria nel tempo?
If I need to develop a separate tool that diagnostic my software what should it be and what should it do
Prova.
Test automatici. Test unitari, test di integrazione, test end-to-end. Test manuali Basta testare. Il test è una cosa molto intima quindi non aspettarti che qualcosa compri solo per risolvere magicamente questo problema. Questo è lavoro. È altrettanto lavoro, se non di più, come rendere l'applicazione stessa. Ma paga.