Esiste un termine per questa pratica di codifica?

3

Una delle complessità accessorie dell'introduzione di funzionalità a un sistema esistente è che il programmatore deve spesso toccare diverse aree di codice che non sono immediatamente adiacenti. Nel lungo periodo può non essere chiaro quando si guarda un po 'di codice che riguarda un altro bit trovato altrove. È sia brutto design e un rischio di manutenzione. Una delle proprietà del codice superiore, nel mio libro, è la sua capacità di mantenere un concetto localizzato in un posto. A volte questo è integrato in un'architettura in primo piano che semplifica l'inserimento di nuove funzionalità in un sistema.

Nei linguaggi di scripting in cui tutte le classi rimangono aperte all'estensione in fase di runtime, può essere facile pensare alla lingua come alla sua piattaforma e non seguire la via della formalizzazione del modo in cui le cose si collegano. Un'app scritta in un linguaggio di scripting potrebbe accettare un modulo in cui il modulo raggiunge i vari componenti del sistema e li modifica - aggiungendo aspetti alle funzioni, cablaggio in eventi e così via. Essenzialmente, poiché l'architettura non è stata progettata correttamente per l'estensione, utilizziamo il sistema plug-in di un povero uomo e spesso questo è sufficiente. In effetti, eliminiamo la necessità di modificare direttamente diversi punti e invece di modificare il sistema magari in punti simili ma in modo automatico.

Questo è ciò su cui mi sto concentrando. Abbiamo ancora bisogno di modificare le cose che sono diffuse nel nostro sistema, ma lo facciamo in un modo che mantiene la totalità delle modifiche localizzate in un singolo file (modulo).

C'è un modello / termine di progettazione per la pratica di localizzare semplicemente tutto il codice (anche se ha tentacoli) in una singola posizione fisica (il proprio file)? Non sono sicuro che sia il pattern plug-in o il pattern di estensibilità perché in molti casi un sistema basato su script potrebbe non essere stato progettato pensando all'estensibilità; tuttavia, è ancora possibile localizzare le modifiche. Questo sarebbe semplicemente chiamato modularità? Sto solo cercando un termine condiviso che possa essere usato per trasmettere correttamente il concetto senza alcuna spiegazione.

    
posta Mario T. Lanza 15.07.2014 - 18:53
fonte

1 risposta

4

Un modello di design è ( per citare Wikipedia ) "soluzione generale riutilizzabile per un problema comune". Stai descrivendo una caratteristica di buon codice, non una soluzione particolare a un problema, quindi "modello di progettazione" non si applica realmente.

Credo che il concetto che stai cercando sia coesione . A rigor di termini, la coesione indica quanto le parti di un modulo si uniscano, ma se il cambiamento di una singola funzionalità richiede il contatto con diversi moduli, la coesione deve essere carente.

La separazione delle preoccupazioni è un concetto correlato.

Potresti anche essere interessato a leggere patch per scimmia (la capacità dei linguaggi dinamici di estendere le classi in fase di runtime, come stai descrivendo, di solito considerata una cattiva idea, perché può facilmente causare problemi) e programmazione orientata all'aspetto (un approccio più strutturato per mettere le preoccupazioni trasversali in un singolo modulo).

    
risposta data 15.07.2014 - 19:05
fonte