Je voudrais améliorer la façon dont ce code est écrit. En ce moment, j'ai six méthodes qui sont presque du copier-coller, une seule ligne change. Comment puis-je faire une méthode générique et en fonction de la propriété de l'entrée de données pour modifier les calculs? Je pensais utiliser une programmation fonctionnelle pour y parvenir, mais je ne sais pas comment le faire correctement.
La méthode consiste à obtenir un objet dict. Ensuite, cet objet est transformé en JSON. La mid
variable stocke un JSON avec taux moyen pour la devise à partir de l'API externe, elle doit être avant la boucle for, sinon l'API sera appelée à chaque itération et cela ralentit beaucoup le processus! Ensuite, dans la for
boucle, j'itère les données de l'entrée. La seule différence entre les méthodes est le calcul avant de l'insérer dans la liste..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
Une autre des méthodes:
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
la source
list_p.append()
ligne, pour ceux qui ne sont pas très habiles à différencier visuellement le code. :))Réponses:
En effet, il existe un moyen de réduire le code ici avec lambdas :
la source
m
etb
à quelque chose de plus descriptif étant donné que c'est le code financier :)