Ich möchte die Art und Weise verbessern, wie dieser Code geschrieben wird. Im Moment habe ich sechs Methoden, die fast kopiert und eingefügt werden, nur eine Zeile ändert sich. Wie kann ich eine generische Methode erstellen und abhängig von der Eigenschaft der Dateneingabe die Berechnungen ändern? Ich habe darüber nachgedacht, funktionale Programmierung zu verwenden, um dies zu erreichen, bin mir aber nicht sicher, wie ich es richtig machen soll.
Die Methode erhält ein Diktierobjekt. Dann wird dieses Objekt in JSON umgewandelt. Die mid
Variable speichert einen JSON mit mittlerer Rate für Währung von einer externen API. Sie muss vor der for-Schleife stehen, da sonst die API in jeder Iteration aufgerufen wird und dies den Prozess erheblich verlangsamt! Dann for
iteriere ich in der Schleife durch die Daten von der Eingabe. Der einzige Unterschied zwischen den Methoden besteht in der Berechnung vor dem Einfügen in die 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
Eine andere der Methoden:
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
quelle
list_p.append()
Zeile für diejenigen, die nicht sehr geschickt darin sind, Code visuell zu unterscheiden. :))Antworten:
In der Tat gibt es hier eine Möglichkeit, den Code mit Lambdas zu reduzieren :
quelle
m
undb
zu etwas Beschreibenderem, wenn man bedenkt, dass dies Finanzcode ist :)