Wpis z mikrobloga

Mam następująca klasę:

public class DepositMoneyIntoAccount {

public void deposit(BigDecimal amountOfMoneyToDeposit, Account account, Wallet wallet) {

BigDecimal oldAccountMoney = account.getAccountMoney();
account.setAccountMoney(oldAccountMoney.add(amountOfMoneyToDeposit));
BigDecimal oldWalletMoney = wallet.getWalletMoney();
wallet.setWalletMoney(oldWalletMoney.subtract(amountOfMoneyToDeposit));
}
}

Czy to, że po ustawieniu właściwych wartości w account i wallet można potem ustawić za pomocą setterów jakieś absurdalne liczby np. account.setAccountMoneu(new BigDecimal(1000000000)" to jest problem (i jak go obejść) czy nie powinienem się tym przejmować?
#informatyka #naukaprogramowania #programowanie #programista15k #java
  • 4
@Edelner: jedno konto może być doładowywane z wielu portfeli? Jeden portfel może być doładowywany z wielu kont? To dlaczego nie po prostu:

account
.charge(amount)
.fromWallet(wallet)

i symetrycznie:

wallet
.charge(amount)
.fromAccount(account)

Unikasz setterozo-getterozy, łatwiej jest zapewnić spójność danych.

Dodatkowo taka operacja może zwrócić wartość. Łatwiej będzie testować. Unikaj zwracania void.

ChargingRestult = account
.charge(amount)
.fromWallet(wallet)

Ewentualnie z Either (np Vavr.io):

Either = account
.charge(amount)
.fromWallet(wallet)