1. 리팩토링 이란?
소프트웨어의 외부 동작을 변경하지 않으면서 내부 구조를 체계적으로 개선하는 과정을 말한다. 이 과정은 코드의 가독성을 높이고, 유지보수를 용이하게 하며, 오류 발견 및 수정을 용이하게 하는 것을 목표로 한다. 리팩토링은 소프트웨어 개발의 중요한 부분으로, 코드의 품질을 지속적으로 향상시키기 위해 필요하다.
리팩토링의 목적
- 가독성 향상: 코드를 더 이해하기 쉽게 만들어 다른 개발자가 코드를 빠르게 이해하고 수정할 수 있도록 한다.
- 유지보수성 개선: 코드의 구조를 개선하여 나중에 버그를 수정하거나 새로운 기능을 추가할 때 필요한 노력을 줄인다.
- 성능 최적화: 비효율적인 코드를 개선하여 애플리케이션의 실행 성능을 향상시킬 수 있다.
- 재사용성 증가: 코드의 모듈성을 높여 다른 프로젝트나 다른 부분에서 코드를 재사용하기 쉽게 만든다.
- 버그 발견: 코드를 정리하고 개선하는 과정에서 숨어 있던 버그를 발견하고 수정할 기회를 얻는다.
리팩토링의 원칙
- 외부 동작 유지: 리팩토링은 코드의 외부 동작을 변경해서는 안된다. 사용자 입장에서는 리팩토링 전후에 애플리케이션이 동일하게 동작해야 한다.
- 작은 단계로 진행: 대규모 변경보다는 작은 변경을 반복적으로 적용하여 점진적으로 코드를 개선한다.
- 테스팅: 리팩토링 과정에서는 지속적으로 테스트를 수행하여 리팩토링이 외부 동작에 영향을 미치지 않도록 한다.
- 지속적인 개선: 리팩토링은 한 번에 끝나는 과정이 아니라, 지속적으로 코드를 개선해 나가는 과정이다.
리팩토링의 예
- 변수 이름 변경: 더 의미 있는 변수 이름을 사용하여 코드의 의도를 명확하게 한다.
- 함수 분리: 크고 복잡한 함수를 더 작고 관리하기 쉬운 여러 함수로 분리한다.
- 중복 코드 제거: 반복되는 코드를 찾아내어 함수로 추출하거나 다른 구조로 재구성한다.
- 디자인 패턴 적용: 코드 구조를 개선하기 위해 적절한 디자인 패턴을 적용한다.
- 조건문 간소화: 복잡한 조건문을 더 단순하거나 명확한 로직으로 재작성한다.
2. Define 클래스 활용
package com.tenco.bank.utils;
public class Define {
// 상수
public static final String PRINCIPAL = "principal";
// 이미지 관련
public static final String UPLOAD_FILE_DERECTORY = "C:\\work_spring\\upload/";
public static final int MAX_FILE_SIZE = 1024 * 1024 * 20; // 20MB
// Account
public static final String EXIST_ACCOUNT = "이미 계좌가 존재합니다.";
public static final String NOT_EXIST_ACCOUNT = "존재하는 계좌가 없습니다.";
public static final String FAIL_TO_CREATE_ACCOUNT = "계좌 생성이 실패하였습니다.";
public static final String FAIL_ACCOUNT_PASSWORD = "계좌 비밀번호가 틀렸습니다.";
public static final String LACK_Of_BALANCE = "출금 잔액이 부족 합니다.";
public static final String NOT_ACCOUNT_OWNER = "계좌 소유자가 아닙니다.";
// User
public static final String EXIST_USER = "이미 이름이 존재합니다.";
public static final String ENTER_YOUR_LOGIN = "로그인 먼저 해주세요.";
public static final String ENTER_YOUR_USERNAME = "username을 입력해 주세요.";
public static final String ENTER_YOUR_FULLNAME = "fullname을 입력해 주세요.";
public static final String ENTER_YOUR_ACCOUNT_NUMBER = "계좌번호를 입력해 주세요.";
public static final String ENTER_YOUR_PASSWORD = "패스워드를 입력해 주세요.";
public static final String ENTER_YOUR_BALANCE = "금액을 입력해 주세요.";
public static final String D_BALANCE_VALUE ="입금 금액이 0원 이하 일 수 없습니다.";
public static final String W_BALANCE_VALUE ="출금 금액이 0원 이하 일 수 없습니다.";
public static final String FAIL_USER_LOGIN = "아이디 혹은 비밀번호가 틀렸습니다.";
// etc
public static final String FAIL_TO_CREATE_USER = "회원가입 실패.";
public static final String NOT_AN_AUTHENTICATED_USER = "인증된 사용자가 아닙니다.";
public static final String INVALID_INPUT = "잘못된 입력입니다.";
public static final String UNKNOWN = "알 수 없는 동작입니다";
public static final String FAILED_PROCESSING = "정상 처리 되지 않았습니다.";
}
'Spring Boot > Bank App 만들기 (deployment)' 카테고리의 다른 글
20. 입금 기능 만들기 (0) | 2024.08.08 |
---|---|
19. 출금 기능 만들기 (0) | 2024.08.08 |
17. 계좌 목록 만들기(1단계) (0) | 2024.08.08 |
16. 계좌 생성(유효성, 인증검사 중 누가 먼저 일까?) (0) | 2024.08.07 |
15. 헤더 링크 설정 및 JSTL 태그 활용 (0) | 2024.08.07 |