Il punto centrale del pattern nullable object o special case che dir si voglia è quello di evitare gli IF per gestire il Null. E invece ...
Nella conversione da int? a string: non c'è modo di specificare che stringa usare in caso di null senza usare un IF nemmeno con l'operatore ??. Per es. in una label vorrei poter visualizzare il numero oppure N.A. quando c'è il null e mi tocca mettere un if.
L'abilita principale di un programmatore è sapersela cavare col codice. E invece...
Al posto di contare sulla capacità dei programmatori di capire e usare correttamente la logica booleana dei NULL standardizzata da SQL ne hanno inventata una nuova perché "più intuitiva"
Per quanto ogni disegno è opinabile, lo svantaggio qui è evidente
:( nel primo caso un IF in più riduce la semplicità del codice, raddoppia lo sforzo necessario per testarlo e la possibilità di introdurre un bug
:( nel secondo caso un programmatore può dover scrivere un WHERE con una logica SQL dei NULL e un momento dopo una espressione bool? con una logica C# E non voglio sapere quale logica i SqlType adottano con i NULLABLE BOOL o cosa accade con una espressione bool? in una Stored Procedure C# di SqlServer
A chi fa una osservazione la resposabilità di proporre una alternativa! Nel primo caso un overload del ToString() che accetta come parametro la stringa per il caso NULL o una implementazione del IFormatter che consente di indicarlo nella stringa di formattazione Nel secondo caso degli extension methods .And .Or .Not che implementano la logica SQL
Tags :
Semplicità |
Progettazione Software |
Print | posted @ martedì 24 marzo 2009 22:36