Java 입출금 코드 메소드로 리펙토링

금융에서 사용하는 변수명과 뜻부터 용어 정리가 필요하다.

  • 변수 balance 잔고는 통장에 남아있는 잔액이다.
  • 변수 deposit 입금으로 통장에 돈을 넣는다.
  • 변수 withdraw 출금으로 통장에서 돈을 꺼낸다
  • 변수 Amount 는 거래 금액이다.

이제 아래는 리팩토링이 필요한 코드이다.

deposit, withdraw 메소드를 만들어 보도록 한다.

Java 코드

public class Bank {
    public static void main(String[] args) {
        int balance = 10000;

        // 입금액 2000원
        int depositAmount = 2000;
        balance += depositAmount;
        System.out.println(depositAmount + "원 입금. 현재 잔액: " + balance + "원");

        // 출금액 4000원
        int withdrawAmount = 4000;
        if (balance >= withdrawAmount) {
            balance -= withdrawAmount;
            System.out.println(withdrawAmount + "원 출금. 현재 잔액: " + balance + "원");
        } else {
            System.out.println(withdrawAmount + "원 잔액 부족");
        }

        System.out.println("잔액량: " + balance + "원");
    }
}

Java 코드 실행 결과

2000원 입금. 현재 잔액: 12000원
4000원 출금. 현재 잔액: 8000원
잔액량: 8000원

앞에서 설명한 코드를 이용하여 메소드를 만들고 코드를 개선하도록 한다.

public class Bank {
    public static void main(String[] args) {
        int balance = 10000;

        // 입금액 2000원
        balance = deposit(balance, 2000);

        // 출금액 4000원
        balance = withdraw(balance, 4000);
    }

    public static int deposit(int balance, int amount) {
        balance += amount;
        System.out.println(amount + "원 입금. 현재 잔액: " + balance + "원");
        return balance;
    }

    public static int withdraw(int balance, int amount) {
        if (balance >= amount) {
            balance -= amount;
            System.out.println(amount + "원 출금. 현재 잔액: " + balance + "원");
        } else {
            System.out.println(amount + "원 출금을 시도했으나, 잔액이 부족합니다.");
        }
        return balance;
    }
}
  • deposit 메소드를 새로 만들어 balance 잔액을 업데이트 되도록 개선하였다.
  • withdraw 메소드를 새로 만들어 balance 잔액을 업데이트 되도록 개선하였다.
  • main 메소드는 입금과 출금역할을 하는 메소드를 분리시켰다. 수정 범위가 한정되었기 때문에 개발자 분업이 가능하고 유지보수를 수월하게 만들도록 개선한 것이다.