giovedì 11 febbraio 2010

Virtual (mente) parlando...

Consentire l'estensibilità/ereditarietà è sempre "Un bene" ?

Parafrasando l'idea di base "reduce-to-reuse" sono entrambe (estensibilità ed ereditarietà) "Un bene", perchè questo ci consente di scrivere meno codice, di usarlo meglio, di finalizzare lo scopo di una o più classi.

Tuttavia è necessario uno sforzo concreto in fase d'analisi.
Supponiamo che per applicativo venga richiesto di realizzare anagrafiche, attività è qualche funzionalità generica,
da rilasciare nella "Fase 1". Supponiamo quindi che per lo stesso applicativo sia prevista una "Fase 2" dove ogni azione
eseguita sulla anagrafica (insert/update/delete) debba essere scritta in un log.

In un primo momento al Team viene richiesto di implementare solo la "fase 1" e non venga presentata la "fase 2" .

Il team crea una serie di form per l'anagrafica con le azioni richieste che risulteranno non troppo diverse da queste..

protected void btnInsert()
{
// logiche di verifica dei campi...

// Altre logiche di verifica (doppi e/o simili)...

// codice per insert...
}

Dopo una serie di test il Team consegna l'applicativo... e solo dopo la consolidazione di quanto fatto, o l'accettazione
viene proposta al Team la "fase 2"...

In questo preciso caso eritidare i form implica una quasi completa revisione del codice già scritto ... con una conseguente
e onerosa perdita di tempo...

Se si facesse un passo in più... in fase d'analisi comunicando le due Fasi e comunicando che la seconda non è necessaria
subito...

il team potrebbe produrre per la "fase 1" qualcosa di simile a :

protected virtual void btnInsert(object sender, EventArgs e)
{
// logiche di verifica dei campi...

// Altre logiche di verifica (doppi e/o simili)...

// codice per insert...
}

e ( a fronte dell'aver ereditato la base .. )

protected override void btnInsert_Click(object sender, EventArgs e)
{
base.btnInsert_Click(sender, e);

// codice per Log
}

A fronte di un obbiettivo ben definito è possibile prendere delle decisioni che rendano più semplice il
raggiugimento dello stesso, ed in questo caso "semplice" implica anche Meno costoso...

Nessun commento: