If, else funkcyjnie

If, else funkcyjnie
  • Rejestracja: dni
  • Ostatnio: dni
0

Witam wszystkich mam oto taką metodę która przelicza kursy walut czy opłaca się ją przerobić jakoś funkcyjnie teraz jest to takie modne xd . Głównie o to chodzi czy wydajnościowo da się to zrobić lepiej o to fragment kodu

Kopiuj

BigDecimal getAccountAmountInPLN(final Account account) {
        if (account.getCurrency() == EUR)
            return account.getAmount().multiply(new BigDecimal(Currency.EUR.rate)).setScale(3, 1);
        else if (account.getCurrency() == USD)
            return account.getAmount().multiply(new BigDecimal(Currency.USD.rate)).setScale(3, 1);
        else if (account.getCurrency() == CHF)
            return account.getAmount().multiply(new BigDecimal(Currency.CHF.rate)).setScale(3, 1);
        else
            return account.getAmount().setScale(2);
    }

PA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 288
0

Może użyć switch?

WO
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 34
2

Czemu nie zrefaktorujesz tego zeby to wygladalo mniej wiecej tak?

Kopiuj
BigDecimal getAccountAmountInPLN(final Account account) {
        if ( account.getCurrency() == PLN ){
            return account.getAmount().setScale(2);
        }
        return account.getAmount().multiply(new BigDecimal(getCurrency().rate)).setScale(3, 1);
    }
YA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2384
0

A co u Ciebie zwraca getAmount()? JSR-354 nie dostarcza wszystkiego co potrzebujesz do takich konwersji?

Kopiuj
    MonetaryAmount amount = ...;
    CurrencyConversion conversion = MonetaryConversions.getConversion("CHF");
    MonetaryAmount amountInCHF = amount.with(conversion);

Zaokrąglenia pewnie też można robić...

S9
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Warszawa
  • Postów: 3573
1

Ja jak już to bym zrobił obiektowo, tzn skorzystał z polimorfizmu :)

Shalom
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Space: the final frontier
  • Postów: 26433
0

A czemu Account nie posiada metody do tego, skoro Account samo wie jaką ma walutę i w ogóle nie musi robić ifów?

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.