Vorrei migliorare il modo in cui questo codice è scritto. In questo momento ho sei metodi che sono quasi copia-incolla, sta cambiando solo una riga. Come posso effettuare un metodo generico e in base alla proprietà dell'input di dati per modificare i calcoli? Stavo pensando di usare la programmazione funzionale per raggiungere questo obiettivo, ma non sono sicuro di come farlo correttamente.
Il metodo sta ottenendo un oggetto dict. Quindi questo oggetto viene trasformato in JSON. La midvariabile memorizza un JSON con frequenza media per la valuta dall'API esterna, deve essere prima del ciclo for, altrimenti l'API verrà chiamata in ogni iterazione e questo rallenta molto il processo! Quindi, nel forciclo, eseguo l'iterazione attraverso i dati dall'input. L'unica differenza tra i metodi è il calcolo prima di inserirlo nell'elenco..append(mid_current - bankMSell)
def margin_to_exchange_rate_sell(data):
j = data.to_JSON()
list_p = []
mid = midrate.get_midrate(j["fromCurrency"][0])
for idx, val in enumerate(j['toCurrency']):
try:
mid_current = 1/get_key(mid, j['toCurrency'][idx])
bankMSell = float(j['sellMargin'][idx])
list_p.append(mid_current - bankMSell)
except Exception as e:
list_p.append(0)
print(str(e))
return list_p
Un altro dei metodi:
def margin_to_exchange_rate_buy(data):
j = data.to_JSON()
list_p = []
mid = midrate.get_midrate(j["fromCurrency"][0])
for idx, val in enumerate(j['toCurrency']):
try:
mid_current = 1/get_key(mid, j['toCurrency'][idx])
bankMSell = float(j['sellMargin'][idx])
list_p.append(mid_current + bankMSell)
except Exception as e:
list_p.append(0)
print(str(e))
return list_p
list_p.append()linea, per coloro che non sono molto abili nel diffondere codice visivamente. :))