Coding Horror #1

Se c’è un aspetto che lo sviluppatore medio non tiene nella giusta considerazione quando scrive il codice è il cast tra tipi. Questo lo deduco solo dalla mia esperienza sul campo, ovvio.

Sto parlando del cast ridondante, cioè quel cast semplicemente inutile e che potrebbe essere tranquillamente evitato, basterebbe solo un pò di attenzione in più, e forse un pò di copia ed incolla in meno

Spesso un cast ridondante non è immediatamente percepibile.

Se si scrive una cosa del genere:

   1: XmlDocument xmlDoc = new XmlDocument();
   2: // ......
   3: // ....
   4: XmlNode node = (XmlNode)xmlDoc;

non è immediatamente visibile (ad occhio, intendo) il cast ridondante della riga 4, poichè un oggetto XmlDocument può essere tranquillamente assegnato ad un oggetto XmlNode in quanto quest’ultimo è la classe da cui deriva, e quindi per i principi basilari del polimorfismo o per il principio di sostituzione di Liskov (al secolo Barbara Liskov, è quindi una donna ) , fate voi, per cui, se B è una classe derivata da A, allora oggetti di tipo A possono essere sostituiti da oggetti di tipo B senza alterare la correttezza dei risultati.

Quindi il codice precedente può essere riscritto senza la ridondanza del cast, cosi:

   1: XmlDocument xmlDoc = new XmlDocument();
   2: // ..
   3: // ..
   4: XmlNode node = xmlDoc;

Ma quando vedo cose del genere:

   1: Byte b = (System.Byte) 0;

non riesco proprio a non rabbrividire, anche con il caldo torrido di questi giorni .

Ma come è possibile effettuare un cast del valore zero verso un tipo Byte !?!?!, quando, lo sanno pure i bambini, il tipo primitivo Byte rappresenta un valore intero senza segno compreso tra 0 e 255 ?.

Scusate lo sfogo…..

Print | posted on Tuesday, July 27, 2010 11:59 AM

Comments on this post

No comments posted yet.

Your comment:

 (will show your gravatar)
 
Please add 3 and 4 and type the answer here: