Quale sarebbe una buona linea guida per la denominazione da utilizzare nel modello di programmazione asincrona?

StackOverflow https://stackoverflow.com/questions/1034840

Domanda

Sto eseguendo alcuni refactoring su un pezzo di codice per trasformare tutte le operazioni di blocco nelle loro controparti asincrone. Il mio codice è in C # e sta eseguendo una query UPnP seguita da una query HTTP. Per questo, utilizzo i metodi APM di UdpClient e WebClient (BeginReceive e così via).

Il mio metodo singolo ora è una successione di Call_1 - > Callback_1 - > Call_2 - > Callback_2 e così via.

Qualcuno può indicarmi alcune linee guida sui nomi che dovrebbero essere dati ai metodi in quella situazione, sapendo che tutto tranne Call_1 non fa parte della mia interfaccia di classe. I metodi Callback_1, Call_2, ecc. Sono in effetti solo un effetto collaterale della desincronizzazione del flusso di lavoro. Quale nomenclatura useresti?

Usando CCR, tutto rimarrebbe in un unico metodo carino usando la parola chiave yield, ma sfortunatamente non userò CCR per ora.

È stato utile?

Soluzione

Per esprimere al codice client quale sia l'intenzione del tuo codice, aggiungerei il prefisso a tutti i metodi che hanno un comportamento asincrono con esegui . Ad esempio: runSOQuery , runDiskCheck e così via.

Forse stupido ma anche più chiaro per il codice client potrebbe essere fireAndForget , ma non sono sicuro di aver compreso correttamente la tua domanda ...

La cosa migliore potrebbe essere quella di esprimere la semantica asincrona del metodo restituendo un valore di ritorno speciale , come java.util.concurrent.Future, nel caso di Java o qualcosa di "fatto in casa"; , altrove. .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top