• 티스토리 홈
  • 프로필사진
    Song hyun
  • 방명록
  • 공지사항
  • 태그
  • 블로그 관리
  • 글 작성
Song hyun
  • 프로필사진
    Song hyun
    • 분류 전체보기 (780)
      • 백준 (0)
      • 영어 (2)
        • Diary (0)
        • Toast Masters (2)
      • 메모 (13)
      • 설치 메뉴얼 (30)
      • Java (178)
      • MySQL (60)
      • JSP (67)
      • Springboot (46)
      • HTML,CSS, JS (71)
        • HTML (8)
        • CSS (12)
        • JavaScript (37)
        • HTML&CSS 스터디 (13)
      • C++ (7)
      • Linux (7)
      • JPA (34)
      • Kotlin (2)
      • Flutter (42)
      • Error Note (39)
      • 디자인 패턴 (12)
      • 디지털논리회로 (4)
      • 데이터베이스 시스템 (8)
      • 알고리즘 (7)
      • 운영체제 (3)
      • 이산수학 (3)
      • 인공지능 (1)
      • 자료 구조 (14)
        • 기본 개념 (14)
        • 자료구조 스터디 (0)
      • 💡My project (76)
        • 팩맨 : Java Swing 게임 제작 프로젝트 (6)
        • 네이트톡 : Java 소켓 통신 프로젝트 (4)
        • 포켓옥션 : HikariCP&JDBC CRUD 프.. (3)
        • 이지 부산 : BDIA-Devton 2024 프로.. (20)
        • 그린 유니버시티 : JSP를 사용한 학사관리 프로.. (1)
        • 애드 포커 : 웹 소켓과 Spring을 사용한 카.. (1)
        • 셸위 : 게임 친구 매칭 사이트 (21)
        • 다모아 : 개발자 중개 플랫폼 (20)
      • 📗스터디 (13)
        • CNN : 웹개발 스터디 (10)
        • Node&React로 유튜브 사이트 만들기 (3)
      • 📙독서 및 강연 기록 (36)
        • 강연 (14)
        • 독서 (22)
  • 방문자 수
    • 전체:
    • 오늘:
    • 어제:
  • 최근 댓글
      등록된 댓글이 없습니다.
    • 최근 공지
        등록된 공지가 없습니다.
      # Home
      # 공지사항
      #
      # 태그
      # 검색결과
      # 방명록
      • [SpringBoot] 18. 중간 리팩토링
        2024년 08월 08일
        • Song hyun
        • 작성자
        • 2024.08.08.:12
        728x90
        반응형

        [SpringBoot] 18. 중간 리팩토링

         

        1. 리팩토링의 목적

        (1) 가독성 향상

        (2) 유지보수성 개선

        (3) 성능 최적화

        (4) 재사용성 증가

        (5) 버그 발견

         

        2. 리팩토링의 원칙

        (1) 외부 동작 유지

        (2) 작은 단계로 진행

        (3) 테스팅

        (4) 지속적인 개선

         

        3. 리팩토링의 예

        (1) 변수 이름 변경

        (2) 함수 분리

        (3) 중복 코드 제거

        (4) 디자인 패턴 적용

        (5) 조건문 간소화

         

        4. 리팩토링 실전

        (1) 스크립트 상수화 (Define.java)

        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_PASSWROD = "계좌 비밀번호가 틀렸습니다.";
        	public static final String LACK_Of_BALANCE = "출금 잔액이 부족 합니다.";
        	public static final String NOT_ACCOUNT_OWNER = "계좌 소유자가 아닙니다.";
        	
        
        	//  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원 이하 일 수 없습니다.";
        	
        	// 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 = "정상 처리 되지 않았습니다.";
        }
        	/**
        	 * 계좌 생성 기능 
        	 * @param dto
        	 * @param id
        	 */
        	// 트랜잭션
        	@Transactional
        	public void createAccount(SaveDTO dto, Integer principalId) {
        		int result=0;
        		
        		try {
        			result=accountRepository.insert(dto.toAccount(principalId));
        		} catch (DataAccessException e) {
        			throw new DataDeliveryException(Define.INVALID_INPUT, HttpStatus.INTERNAL_SERVER_ERROR);
        		} catch (Exception e) {
        			throw new DataDeliveryException(Define.UNKNOWN, HttpStatus.SERVICE_UNAVAILABLE);
        		}
        
        		if(result==0) {
        			throw new DataDeliveryException(Define.FAILED_PROCESSING, HttpStatus.INTERNAL_SERVER_ERROR);
        		}
        		
        	}

         

        (2) 자바스크립트(JS)로 로그인화면으로 보내기

        	@ResponseBody
        	@ExceptionHandler(UnAuthorizedException.class)
        	public String unAuthorizedException(UnAuthorizedException e) {
        		StringBuffer sb = new StringBuffer();
        		sb.append(" <script>");
        		sb.append(" alert('"+ e.getMessage()  +"');");
        		sb.append(" location.href='/user/sign-in'");
        		sb.append(" </script>");
        		return sb.toString(); 
        	}
        728x90
        반응형

        'Springboot' 카테고리의 다른 글

        [Springboot] 20. 입금 기능 만들기  (0) 2024.08.08
        [Springboot] 19. 출금 기능 만들기  (0) 2024.08.08
        [SpringBoot] 17. 계좌 목록 기능 구현  (0) 2024.08.08
        [SpringBoot] **16. 중간점검 및 헷갈리는 부분들 정리(1)  (0) 2024.08.07
        [SpringBoot] 15. 계좌 생성 및 유효성 검사  (0) 2024.08.07
        다음글
        다음 글이 없습니다.
        이전글
        이전 글이 없습니다.
        댓글
      조회된 결과가 없습니다.
      스킨 업데이트 안내
      현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
      ("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)
      목차
      표시할 목차가 없습니다.
        • 안녕하세요
        • 감사해요
        • 잘있어요

        티스토리툴바