Quante volte di fronte ad una segnalazione di un problema da parte di un utente abbiamo pensato o detto "Questo è impossibile...".
Trovo molto efficace il Tip 33 del libro The Pragmatic Programmer:
If It Can't Happen, Use Assertions to Ensure That it Won't
Il modo più semplice per seguire questo consiglio è quello di usare il metodo Assert del framework. Segue un semplice esempio:
public void WriteString(string s)
{
Debug.Assert(s != null);
// Segue il codice della funzione
}
Si deve fare attenzione che il codice della Assert non abbia side effects e, soprattutto, non inserire codice che deve essere eseguito per il corretto funzionamento del programma; perchè le Assert possono essere disabilitate quando si passa al codice in release.
Segue un piccolo quiz:
Quale di queste affermazioni impossibili può accadere?
- Un mese con meno di 28 giorni
- Directory.GetFiles("."); segnala un eccezione (cioè non è possibile accedere alla directory corrente)
- In c#: a = 2; b = 3; if (a + b != 5) Console.WriteLine("Questo è impossibile");
- Un triangolo in cui la somma degli angoli interni è diversa da 180°
- Un minuto che non dura 60 secondi
- In c#: (a + 1) <= a
Le risposte al prossimo post.