기본 콘텐츠로 건너뛰기

Refactoring


Refactoring
-마틴 파울러-



1일차

추후 수정할 부분?
1.      Refactoring 할 코드 부분에 대한 신뢰도 높은 각종 테스트 작성.
- 이 테스트 들은 반드시 자체 검사 되게 작성
2.      임시변수 최대한 없애기
3.      상속구조 만들기

Refactoring 개론
- 겉으로 드러나는 기능은 그대로 둔 채, 알아보기 쉽고 수정하기 간편하게 소프트웨어 내부를 수정하는 작업
- Refactoring 기법을 연달아 적용해서 겉으로 드러나는 기능은 그대로 둔 채 소프트웨어 구조를 변경한다

해야하는 이유?
- 소프트웨어 설계 개선
- 좀 더 쉽게 소프트웨어 이해하기 위해
- 버그를 좀 더 쉽게 찾기 위해
- 생산성 향상

Refactoring이 필요할 때?
- 같은 작업의 삼진 아웃(3번 반복)
- 기능 추가
- 버그 수정
- 코드 검수

Refactoring 관련 문제
- 데이터베이스
- 인터페이스 변경
- 설계를 수정하는 일
- 처음 코딩 작성시
- 납기 임박 시점

코드의 구린내

- 중복 코드 ( Duplicated Code )
- 장환한 메서드 ( Long Method )
- 방대한 클래스 ( Large Class )
- 과다한 매개변수 ( Long Paremeter List )
- 수정의 산발 ( Divergent Change )
- 기능의 산재 ( Shotgun Surgery )
- 잘못된 소속 ( Feature Envy )
- 데이터 뭉치 ( Data Clumps )
- 강박적 기본 타입 사용 ( Primitive Obsession )
- switch
- 평행 상속 계층 ( Parallel Inheritance Hierarchies )
- 직무 유기 클래스 ( Laze Class )
- 막연한 범용 코드 ( Speculative Generality )
- 임시 필드 ( Temporary Feild )
- 메시지 체인 ( Message Chains )
- 과잉 중개 메서드 ( Middle Man )
- 지나친 관여 ( Inappropriate Intimacy )
- 인터페이스가 다른 대용 클래스 ( Alternative Classes with Different Interfaces )
- 미흡한 라이브러리 클래스 ( Incomplete Library Class )
- 데이터 클래스 ( Data Class )
- 방치된 상속물 (Refused Bequest )
- 불필요한 주석 ( Comments )

테스트 작성

- Refactoring 실시 하기 위한 필요 전제 조건
- 자가 테스트 코드의 가치
- JUnit 테스트 프레임워크
- 테스트 추가



댓글

이 블로그의 인기 게시물

블록체인 거래소 모니터링시스템 구축이야기(2/?) - 서버 아키텍처

  코인 거래소 모니터링시스템 구축이야기(2/?) 코인 거래소 모니터링 시스템 구축 (가칭 : 김프멈춰) 서버 구성 사용자가 확인할 서비스 페이지, 데이터 저장소에 대한 서버는 NAS 서버로 운영 일일 Data 크롤링 서버는 Cloud 서버 이용하여 운영 - 서비스페이지 및 데이터 저장소 (Nas 서버) : Docker container ubuntu 20.04 - 일일 크롤링 서버 (Cloud at Cost Cloud 서버) : CentOS 7 서버 아키텍처 서버 아키텍처 레퍼런스 빗썸 : https://apidocs.bithumb.com/ 업비트 : https://docs.upbit.com/ 홍콩 Bitfinex : https://docs.bitfinex.com/docs 몽고 DB 설치 : https://coterie.tistory.com/20 1. 개요 :  https://limdh3325.blogspot.com/2021/04/1.html 2. 서버 아키텍처 :  https://limdh3325.blogspot.com/2021/04/2.html 3. MongoDB 설치 :  https://limdh3325.blogspot.com/2021/04/3.html 4. 데이터 모델링 :  https://limdh3325.blogspot.com/2021/05/4.html 5. MongoDB 저장 :  https://limdh3325.blogspot.com/2021/06/5.html