Saya ingin memperbaiki cara kode ini ditulis. Saat ini saya memiliki enam metode yang hampir sama, hanya satu baris yang berubah. Bagaimana saya bisa membuat metode generik dan tergantung pada properti input data untuk mengubah perhitungan? Saya berpikir untuk menggunakan pemrograman fungsional untuk mencapai itu, tetapi saya tidak yakin bagaimana melakukannya dengan benar.
Metode ini mendapatkan objek dict. Kemudian objek ini ditransformasikan menjadi JSON. The mid
variabel menyimpan JSON dengan midrate untuk mata uang dari API eksternal, itu harus sebelum untuk loop sebaliknya API akan dipanggil di setiap iterasi dan memperlambat ini turun proses banyak! Kemudian dalam for
loop, saya beralih melalui data dari input. Satu-satunya perbedaan antara metode adalah perhitungan sebelum memasukkannya dalam daftar..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
Salah satu metode lain:
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
sumber
list_p.append()
baris, bagi mereka yang tidak mahir dalam membedakan kode secara visual. :))Jawaban:
Memang, ada cara untuk mengurangi kode di sini dengan lambdas :
sumber
m
danb
menjadi sesuatu yang lebih deskriptif mengingat ini adalah kode keuangan :)