JS: convenzione per distinguere metodi immediati vs asincroni

1

Normalmente ho un atteggiamento laissez faire sulle convenzioni sui nomi dei metodi, ma ora sto lavorando su un modulo in JavaScript che avrà alcuni metodi che possono restituire il valore direttamente (funzione immediata / semplice), e altri che devono essere asincroni e funzionare tramite callback / promises / etc.

Penso che sarebbe preferibile che i nomi dei metodi rendano chiaro quale sia. Esiste già una convenzione di denominazione?

O dovrei semplicemente usare le callback anche per i metodi che non lo richiedono?

    
posta wberry 06.06.2017 - 04:23
fonte

2 risposte

1

Ciò che stai descrivendo sembra già essere in lavorazione per ES2017 chiamato async funzioni. Quindi la parola chiave "async" renderebbe perfettamente chiaro quale tipo di funzione sia. Anche se l'uso di questo "async" non garantisce che sia asincrono, è potrebbe chiaramente essere potenzialmente.

Nel frattempo, non vedo nulla di sbagliato nell'affrontare la convenzione C # menzionata da @DerekElkins e aggiungere un Async alla fine dei nomi di funzioni che si intendono chiamare in modo asincrono.

    
risposta data 06.06.2017 - 15:37
fonte
1

Non esiste una convenzione valida per tutti, puoi seguire diverse guide di stile e ottenere la tua risposta, ma probabilmente ti daranno risposte diverse in base all'esperienza personale dell'autore.

Per i callback (clic sui pulsanti, eventi ecc.) è comune usare il prefisso on sul nome del metodo, di solito suggerisce che il metodo / funzione è un callback che eseguirà on un determinato evento

function onClick(event) { ... }

Anche gli elementi HTML forniscono tale denominazione, ad esempio input#onchange quando un il valore di input è stato modificato, o la window#onload richiamata che viene attivata quando la finestra è caricato.

HTML

<input type="text" value="" onchange="onChange()">

JS

function onChange() {
    console.log("i was changed");
}

Per le promesse non esiste una convenzione di denominazione specifica, ma puoi allegare un suggerimento al nome della variabile

var getDataPromise = new Promise(...);

Naturalmente le promesse di reclamo A + devono implementare il metodo .then che suggerisce anche che la tua funzione restituisce una promessa.

Ho anche visto gli sviluppatori attaccare Async quando hanno 2 versioni della stessa funzione

function getData() {...}
function getDataAsync() {...}

E per chiarire ogni altra ambiguità, è buona norma tenere commenti nel codice o scrivere documentazioni che spieghino ciò che ogni funzione / metodo accetta e restituisce.

    
risposta data 07.06.2017 - 11:20
fonte

Leggi altre domande sui tag