In questa domanda Ho chiesto: il costo di progettare più livelli di astrazione per consentire un accoppiamento libero vale i vantaggi, o no?
La gente ha detto che spesso ne vale la pena, ma si dovrebbe sentire se la sua applicazione utilizzerà effettivamente questo progetto sottostante più tardi, o se sarà solo una perdita di tempo.
La mia nuova domanda è:
Si dovrebbe creare l'infrastruttura per consentire flessibilità e manutenibilità in anticipo - rendendo così lo sviluppo "più pulito" e più "organizzato", man mano che le cose vengono sviluppate sull'infrastruttura esistente e sui livelli di astrazione?
Con questo approccio, tu desing l'infrastruttura sottostante mentre non hai molta conoscenza su come le cose verranno effettivamente implementate in seguito. Pertanto, potresti codificare cose che potrebbero non essere utilizzate in seguito e sprecare il tuo tempo. Ma lo sviluppo sarà più pulito e più organizzato.
O dovresti creare un'infrastruttura per aumentare la flessibilità e rendere le cose più liberamente accoppiate, durante l'implementazione di qualcosa - quindi sprecare meno tempo su cose che potrebbero non essere effettivamente utilizzate in seguito?
Questo approccio ti impedisce di codificare cose che non saranno utilizzate, ma ti costringe a progettare i livelli di astrazione e le strutture per il codice esistente , modificando il codice esistente, invece di codificare i disegni sottostanti < strong> prima che codifica il codice che utilizza questi disegni.
Esempio per l'approccio 1: "Ok, ora iniziamo a fare questa parte relativamente grande dell'applicazione.Questa parte avrà generalmente a che fare con la reazione a un paio di GUI. Facciamo un livello sottostante di astrazione per questa parte del programma, da utilizzare successivamente quando la implementiamo. "
Esempio di approccio 2: "Ok, sono nel bel mezzo della progettazione di questa parte del programma. Mentre ci lavoro, vedo che questa parte è meglio accoppiata liberamente. Facciamo un altro livello di astrazione per consentirlo e modificare questo codice per utilizzare quel livello di astrazione ".
Quale approccio ha più senso o è più comune?