If, else funkcyjnie

If, else funkcyjnie
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);
    }

jarekr000000
To nie ma nic wspólnego z modą, ani funkcyjnym. Ta metoda jest po prostu dość średnia.
PA
PA
  • Rejestracja:ponad 6 lat
  • Ostatnio:prawie 3 lata
  • Postów:288
0

Może użyć switch?

WO
  • Rejestracja:ponad 6 lat
  • Ostatnio:prawie 6 lat
  • 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);
    }
edytowany 1x, ostatnio: workout
YA
  • Rejestracja:prawie 10 lat
  • Ostatnio:13 dni
  • Postów:2370
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:ponad 10 lat
  • Ostatnio:6 miesięcy
  • Lokalizacja:Warszawa
  • Postów:3573
1

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


"w haśle <młody dynamiczny zespół> nie chodzi o to ile masz lat tylko jak często zmienia się skład"
Shalom
  • Rejestracja:ponad 21 lat
  • Ostatnio:około 3 lata
  • 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?


"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"
edytowany 1x, ostatnio: Shalom

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.