Alias delle chiamate a funzioni ripetute

3

Sto lavorando a uno script utente JavaScript per aiutare il mio team a rendere più efficiente il montaggio dei ticket di supporto su un'interfaccia web. In tal modo, mi sto trovando a effettuare molte chiamate all'API DOM per raccogliere dati, ad es. Con listener di eventi e chiamate attivate dall'utente.

Nel tentativo di rendere più conciso il mio script, ho creato alcune funzioni di "alias", come di seguito.

Mi chiedo se fare qualcosa del genere renderebbe il codice più difficile da mantenere, nel caso che qualche altra persona (o me stesso in 6 mesi) debba aggiungere o modificare il codice in un secondo momento, o se lo sarebbe utile, nel tagliare la ripetizione del codice non necessaria come document.getElementById("foo").addEventListener("change", doBar) .

Domanda

Anche se questo può essere in qualche modo basato sull'opinione, voglio chiedere: è aliasing [ben noto, standard] chiamate di funzione ripetitive che possono essere un ostacolo a mantenere il codice chiaro e relativamente facile da mantenere?

Per un po 'più di background, questo alla fine sarà un helper di template per automatizzare le attività ripetitive nel browser e assistere qualcuno che sta assemblando un ticket IT via telefono o via email.

/* 
Alias function to shorten 'document.getElementById' calls 
*/
const getElemById = function(elemId) {
    return document.getElementById(elemId);
};

/* 
Alias function to shorten 'addEventListener("change", refreshCallerValues)' calls 
*/
const addRefreshListener = function(elemId) {
    getElemById(elemId).addEventListener("change", refreshCallerValues);
};
    
posta Phrancis 04.03.2018 - 00:44
fonte

1 risposta

4

Le astrazioni non hanno solo un valore - codice più semplice -, ma anche un costo: più livelli di astrazione rendono più difficile capire cosa sta succedendo. Quindi c'è bisogno di un equilibrio tra il valore e il costo di un'astrazione.

Le astrazioni tendono ad essere più preziose quando non sono solo un alias per alcune altre operazioni (è un'astrazione terribilmente dispersiva), ma quando hanno un significato indipendente nel dominio del problema.

L'aliasing di una funzione standard ben nota generalmente non fornisce molto significato. Se non rende il codice molto più semplice, non ne vale la pena. Ti stiamo solo salvando da un document. prima che getElementByID() non sia davvero molto. Quindi potrebbe essere imprudente oscurarlo da un lettore occasionale che non ha familiarità con la tua scorciatoia getElemByID() (alias tu in pochi mesi).

Il tuo altro esempio addRefreshListener() è migliore perché siamo astratti su più argomenti. Ma molto più importante è che questa funzione ha un significato indipendente nel dominio del problema (manipolazione DOM). Soddisfa alcuni obiettivi, senza che il chiamante debba sapere come è soddisfatto. Pertanto, rilascerò questi dettagli di implementazione dai tuoi documenti.

    
risposta data 04.03.2018 - 01:04
fonte

Leggi altre domande sui tag