Code Quality

Comunicare le intenzioni di un metodo attraverso la sua signature

Ieri stavo debuggando un componente per risolvere una serie di bugs, quando, dopo un buon numero di F11 arrivo a un metodo che prende in input una collection e restituisce una collection dello stesso tipo. La signature è più o meno come questa: private static List<int> ApplyCustomFilter1(List<int> ints) E questo assomiglia al codice che lo usa: List<int> ints = new List<int> { 0, 1, 2, 3 };var filteredInts = ApplyCustomFilter1(ints);// altro codice che lavora su ints e filteredInts Ok, quelle tre righe mi hanno fatto perdere mezz'ora :( Il problema è che non posso assumere nulla sulla lista ‘ints’ dopo che il...

posted @ Monday, August 3, 2009 8:22 PM | Feedback (0)

Learn by Reading (code) #2 – StructureMap, the Registry DSL

StructureMap è un maturo (apparentemente il più vecchio) IoC tool per .Net. Non è mia intenzione in questo post dimostrare come usarlo o spiegarne le funzionalità e neppure parlare di IoC o DI…per quello c’è Google. Piuttosto, mi interessa analizzare l’implementazione di un suo componente, il Registry DSL – riporto dal sito ufficiale: “The Registry DSL is the recommended way to configure StructureMap, and creating Registry classes is the recommended way of using the Registry DSL.  The Registry DSL is mostly a Fluent Interface with some Nested Closure usage.  The intent of the Registry DSL is to make the configuration process...

posted @ Saturday, July 4, 2009 12:19 AM | Feedback (0)

Learn by Reading #1 - Funq

Questo è il primo post di una serie dove proverò ad analizzare come progetti più o meno famosi sono stati implementati. Parto con Funq, che come descritto dall’autore “provides a high performance DI framework by eliminating all runtime reflection through the use of lambdas and generic functions as factories. Developed entirely in C# using TDD, it's a container you can crack open and actually understand to the core.” Ho colto l’invito e l’ho crack opened. La prima cosa che si nota è quanto la libreria sia compatta e minimalista, meno di 15 files in tutto, di cui: ...

posted @ Monday, June 22, 2009 1:08 AM | Feedback (2)

sbagliare è umano…

…ma perseverare...arghhh E dire che mi ero anche riletto questa interessante discussione pochi mesi fa :( Giusto così poi magari me lo ricordo, riporto qui, velocemente, la cronaca dei fatti. mi viene richiesto di modificare un componente di un grosso sistema implemento la modifica (correttamente) e mi stupisco di aver fatto anche abbastanza in fretta chiacchiero con un collega e gli dico: sai, ho già finito quella modifica…pensavo peggio funziona a dovere, ma voglio...

posted @ Tuesday, June 9, 2009 11:44 PM | Feedback (0)