marzo 2008 Blog Posts
Ho sottoscritto l'abbonamento a NetFlix un annetto fa. Per capirci funziona come un normale video noleggio solo che va tutto per posta. Chiedi un film, te lo mandano (in un giorno ce l'hai a casa), quando hai finito di vederlo lo lasci nella cassetta della posta (con la bandierina alzata) e ritorna indietro. Prosegue lo stesso processo a ciclo continuo.
Lunedi' dovevano partire i nuovi DVD che avevo richiesto e per un disguito non sono partiti. Ecco quindi che trovo un'email:
...
Visual Studio Team Test, ed alcune altre SKU, propone un'interessante feature: genera l'accessor per poter testare anche metodi privati. Il codice generato usa sostanzialmente reflection.
Dal mio punto di vista, questa feaure e' sostanzialmente dannosa se usata abitudinariamente. I metodi e le proprieta' da testare sono internal e public, punto! Se testando questi non si arriva mai a testare il metodo privato (vedasi code coverage), vuol dire che quel codice non serve a niente e va eliminato. Meno codice inutile piu' facile manutenzione!
Come in tutte le cose di buon senso ci sono dei casi particolari, come ad esempio testare l'interfaccia (non...
Ogni volta che debbo registrare ad un nuovo servizio mi ritrovo ad inventare una nuova password. Gli algoritmi divengono sempre piu' complicati, come ad esempio:
Deve essere lunga dra 6 e 12 simboli
Deve contenere almeno un numero
Deve contenere almeno una maiuscola e minuscola
Deve contenere almeno un simbolo di punteggiatura
Non deve contenere spazi bianchi
In altre parole, e' un'altra palla al piede da ricordarsi. Se poi come in un dominio Windows c'e' la regola che non deve essere uguale alle precedenti 72, inizio a farmele...
Quest'oggi stavo giocando con l'accessibility accessor 'protected internal' e non mi quadrava una cosa. Veniamo al pezzo di codice incriminato:
public class B
{
protected internal A a;
}
internal class A
{
}
Il compilatore generera' un bel errore del tipo "Inconsistent accessibility: field type 'Demo.A' is less accessible than field 'Demo.B.a'". Il compilatore ha sempre ragione ed infatti 'protected internal' vuol dire 'protected' or 'internal'. Essendo la classe A solo internal, l'aggiunta di 'protected' non va bene in quanto ha una visibilita' piu' estesa.
Mi son chiesto ma come accidenti posso avere protected and internal dato che sia l'IL (FamAndAdssem) che C++/CLI (protected private) che System.Reflection.Emit lo permettono? La risposta...
E' ormai provato scentificamente che noi umani siamo in grado di percepire solamente le differenze, ma non i valori assoluti. Questo si riflette sulle nostre scelte quotidiane.
Questa definizione di relativita' non e' probabilmente sufficiente. Dobbiamo aggiungere un altro elemento: la somiglianza nel contesto. Cioe' siamo in grado di gestire la differenza se i due elementi sono comparabili.
Facciamo un esempio. Se voglio mangiare un frutto e ho davanti una banana ed una pera (devono piacere entrambe) non so proprio quale scegliere. In questo scenario vado a caso. Se viceversa, aggiungo una pera un pochetto ammaccata, gli esperimenti dimostrano che scegliero' con maggiore...
Alcuni lo chiamano Test Driven Development, altri Test Driven Design, eppure la differenza e' sostanziale.
Nel caso di Test Driven Development il codice di test e' inteso come strumento di validazione. Viceversa nel caso di Test Driven Design il codice di test e' inteso come strumento di analisi. Quindi si passa da due concetti radicalmente differenti e con obiettivi diversi, validazione vs analisi.
Quindi, nell'ottica del Test Driven Design possiamo pensare al codice di test come le nostre specifiche tecniche, le quali verranno validate dallo stakeholder e visionate, nonche' approvate, durante la prima code review.
Ieri sono andato ad una conferenza del professor Dan Ariely del MIT a sentir parlare della predicibilita' dell'irrazionale. E' veramente stupefacente come il genere umano sia predicibile anche quando si sente in totale liberta' decisionale.
Cito un paio di esempi interessanti ed emblematici.
Scelta del ristorante
In una via vi sono due ristoranti vuoti posti l'uno di fronte all'altro. Sono state portate 50 coppie di persone e due a due sono state mandate al ristorante. Nessuno sapeva nulla sui due ristoranti (qualita', prezzo, ecc. ecc.). La prima coppia ha scelto un ristorante a caso. La seconda, vedendo un ristorante vuoto e l'altro con...