[TIL] Today I Learned - 221125
2022. 11. 26. 23:27ㆍ기록/TIL
[TIL] Today I Learned - 221125
221125 기록
Java
객체 지향적 설계로 은행을 구현하면서 메서드 쪼개기, 하나의 메서드에는 하나의 책임만 가지게 하는 것에 대해 이해를 하고 그를 실천하였다.
원래의 상태였으면 해당 코드 내부에 있는 다양한 메서드들은 이 transfer이란 메서드에 존재하였겠지만, 메서드를 쪼개면서 각자의 역할에 맞췄기에 최대한 메서드에 책임을 덜어내려고 한다. 또한 기능이 구현이 되면 메서드 중에 합치거나 혹은 로직을 변경하여 메서드의 개수도 줄여보려고 한다.
public void transfer() {
Scanner scanner = new Scanner(System.in);
System.out.println("============================================================================================");
List<Bank> bankList = new ArrayList<>(Arrays.asList(
TossBank.getInstance(), KbKookminBank.getInstance(),
ShinhanBank.getInstance(), WooriBank.getInstance(),
HanaBank.getInstance()
));
printBankList();
String num = scanner.nextLine();
Bank bank = chooseBankInstance(bankList, num);
System.out.println("현재 송금하려는 은행은 " + bank.getName() + "입니다");
KbKookminBank instance = KbKookminBank.getInstance();
if (bank.equals(instance)) {
System.out.println("동일 은행끼리의 송금은 수수료가 없습니다");
System.out.println("보내고자 하는 계좌를 입력해주십시오");
Account accountSend = validationSame(scanner);
System.out.println("받고자 하는 계좌를 입력해주십시오");
Account accountReceive = validationSame(scanner);
System.out.println("보내고자 하는 금액을 입력해주십시오");
long amount = Long.parseLong(scanner.nextLine());
if (checkBalance(amount)) {
receiveSame(accountSend, accountReceive, amount);
ZonedDateTime zonedDateTime = getCurrentDateTime();
addTransactionData(new TransactionData(TimeFormatter.format(zonedDateTime), getAccountNumber(), false, amount, getBalance(), "KB Bank"));
}
} else {
System.out.println("타 은행 송금시 수수료 500원이 부과됩니다");
System.out.println("보내고자 하는 계좌를 입력해주십시오");
Account accountSend = validationSame(scanner);
System.out.println("받고자 하는 계좌를 입력해주십시오");
Account accountReceive = validationDifferent(scanner, bank);
System.out.println("보내고자 하는 금액을 입력해주십시오");
long amount = Long.parseLong(scanner.nextLine());
if (checkBalance(amount)) {
receiveDifferent(accountSend, accountReceive, amount);
ZonedDateTime zonedDateTime = getCurrentDateTime();
addTransactionData(new TransactionData(TimeFormatter.format(zonedDateTime), getAccountNumber(), false, amount, getBalance(), accountReceive.getBankName()));
}
}
System.out.println("============================================================================================");
이번 실습을 통해 SOLID의 단일 책임 원칙과 개방 폐쇄 원칙을 생각하면서 구현하려고 하고 있다. 그렇다 보니 따로 배우는 것보단 기존의 지식을 내 것으로 녹여내려고 하기에 TIL로 주제를 잡아 쓰기 애매하다고 생각하지만 그래도 이것도 하나의 배움이라 생각하고 적게 되었다.
이번 프로젝트의 경우 틀을 팀원분이 만드시고 그에 따라 메서드를 만들며 진행을 하고 있다. 다만 해당 프로젝트의 부분 부분에 내가 모르는 구조가 들어가 있기에 해당 코드를 물어보고 분석하면서 남의 코드를 읽는 것에도 시간을 사용하고 있다.
팀원분의 코드를 읽으면서 구조화의 느낌과 메서드들의 방식을 보면서 배우기도 하면서 다음 프로젝트 때 설계를 진행하게 될때 꺼내어보려고 한다.
'기록 > TIL' 카테고리의 다른 글
[TIL] Today I Learned - 221129 (0) | 2022.11.29 |
---|---|
[TIL] Today I Learned - 221128 (0) | 2022.11.28 |
[TIL] Today I Learned - 221124 (0) | 2022.11.24 |
[TIL] Today I Learned - 221123 (0) | 2022.11.23 |
[TIL] Today I Learned - 221122 (0) | 2022.11.22 |