settembre 2007 Blog Posts
http://en.wikipedia.org/wiki/Resource_Acquisition_Is_Initialization CWaterRenderingStrategy::~CWaterRenderingStrategy(){ delete m_Geometry; delete m_Shader;} e poi subito dopo: COceanRenderingStrategy::~COceanRenderingStrategy(){ delete m_Geometry;} Boom. Double delete e memory corruption. Qualcuno ha perso due ore per cercarlo. Il mio errore e' stato non seguire il pattern RAII e rilasciare m_Geometry nella classe base, ma la classe base non l'aveva inizializzato quindi non ne aveva l'ownership e non doveva cancellarlo. Nella classe derivata ho correttamente costruito e distrutto l'oggetto, ma l'ho scritta mesi dopo. Per altro... uno strategy pattern in questa situazione era overingegnerizzato. Non mi serviva ed ha offuscato il bug. Altra lezione.
... dopo due settimane neppure l'ombra. Vi tengo aggiornati se state seguendo questa appassionante storia :)
Teaching Students to Build Well Formed Object-oriented Methods through Refactoring
Poi Gianluca mi dice che mi lamento sempre, ma questa proprio non potevo lasciarla scappare :) Oggi il mio sogno e' avere un boss che non mi dice che YAGNI e' un concetto di merda. Il sogno di domani e' averne uno che sappia programmare.
Sto lavorando sull'acqua ed ho bisogno di un task dal tool team per supportare il mio lavoro. Senza entrare nei dettagli, ho bisogno che una regione d'acqua sia divisa in un certo numero di quadrati. Come da mia abitudine, mi mantengo sul semplice e chiedo di generare solo due quadrati, per ora, per un particolare livello sul quale sto testando il mio lavoro. Faccio la mia richiesta un paio di giorni fa e attendo. Oggi vedo un Technical Design Document riguardante il design del tool di editing dell'acqua ed una lunga discussione su come presentare le informazioni, l'algoritmo per generare...
http://thread.gmane.org/gmane.comp.version-control.git/57643/focus=57918 Magari se Linus imparasse anche a programmare un bel giorno non si farebbe ridere dietro da mezzo mondo...