AntonioGanci

Il blog di Antonio Ganci
posts - 201, comments - 420, trackbacks - 31

December 2011 Blog Posts

Sviluppare un sito web in TDD usando Ruby e Sinatra

In questo post illustrerò un modo per sviluppare un sito web che usa Sinatra usando la pratica del TDD. Per poter provare gli esempi occorre aver seguito i passi del mio precedente post. Sinatra, come altri framework scritti in Ruby, aderisce allo standard Rack. In sintesi basta realizzare un oggetto che risponde al messagio call, prende un hash come parametro e risponde con un vettore di tre elementi: lo status code, l'header http e il body. Un esempio di un oggetto che rispetta lo standard è: class HelloWorld def call(env) ...

posted @ Wednesday, December 28, 2011 5:30 PM | Feedback (2) | Filed Under [ Tips ]

Primi passi con Sinatra

Ho iniziato a studiare lo sviluppo di applicazioni web con Ruby. Volevo qualcosa di più leggero di Rails per riuscire a padroneggiarlo in meno tempo così la scelta è ricaduta su Sinatra. Di seguito i passi da fare per poter lavorare su Windows con una macchina virtuale Ubuntu: Scaricare VirtualBox per windows da qui Scaricare l'iso dell'installazione di Ubuntu da qui. Ho scaricato l'ultima versione 11.10 a 32 bit. Da VirtualBox click su Nuova. Poi scegliere Linux e Ubuntu e dare un nome alla macchina virtuale (io ho scelto ubuntu-11.10) Come memoria ho impostato 1024Mb. Per il resto ho lasciato le impostazioni di default. Click su Avvia....

posted @ Tuesday, December 27, 2011 3:44 PM | Feedback (4) |

Le difficoltà nell'apprendere la pratica del TDD

Una delle pratiche più invasive di extreme programming oltre al pair programming è il TDD (Test Driven Development) ed è anche la più difficile da padroneggiare. In questo post cercherò di analizzare i motivi, fornendo alcuni spunti su come superare le difficoltà. Le cose più difficili da accettare soprattutto se si ha già una certa esperienza è il fare emergenere il design dai test. Questo implica di non anticipare eventuali feature successive o test successivi e scrivere il codice minimo indispensabile per fare passare il test appena scritto. Nella fase di refactoring poi si toglieranno tutti gli smell introdotti a partire dal più...

posted @ Tuesday, December 20, 2011 9:42 PM | Feedback (2) | Filed Under [ Extreme Programming ]

Ridurre la complessità del sistema implementando un interfaccia in modo esplicito

Un collega mi ha suggerito una tecnica interessante quando si è in presenza di codice legacy. Nella nostra codebase abbiamo creato l'astrazione ICommitCommand per modificare i dati delle risorse esterne nei setup dei un test di accettazione in cui utilizziamo i sistemi reali e non dei fake. Nel caso specifico la scrittura su un indice di Lucene e la modifica di alcuni dati nel db. interface ICommitCommand { void Execute(); }   Inizialmente avevo creato l'oggetto: class LuceneCommand : ICommitCommand { LuceneClient _client; public LuceneCommand(LuceneClient client) { _client = client; } public void Execute() { ...

posted @ Wednesday, December 7, 2011 7:32 PM | Feedback (2) | Filed Under [ Tips ]

Powered by:
Powered By Subtext Powered By ASP.NET