Eu gostaria de melhorar a maneira como este código é escrito. No momento, tenho seis métodos que são quase copiar e colar, apenas uma linha está mudando. Como posso criar um método genérico e, dependendo da propriedade da entrada de dados, alterar os cálculos? Eu estava pensando em usar a programação funcional para conseguir isso, mas não sei como fazê-lo corretamente.
O método está recebendo um objeto dict. Então este objeto é transformado em JSON. A mid
variável está armazenando um JSON com midrate para moeda da API externa, ela deve ser anterior ao loop for, caso contrário, a API será chamada em todas as iterações e isso atrasa muito o processo! Então, no for
loop, eu percorro os dados da entrada. A única diferença entre os métodos é o cálculo antes de inseri-lo na lista..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
Outro dos métodos:
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
fonte
list_p.append()
linha, para aqueles que não estão muito perito na diffing código visualmente :).)Respostas:
De fato, há uma maneira de reduzir o código aqui com lambdas :
fonte
m
eb
para algo mais descritivo considerando este é o código financeira :)