- 리팩토링
* 맛보기 예제
: 원래의 프로그램
: 리팩토링 첫 단계
: statement 메서드 분해와 기능 재분배
: 가격 책정 부분의 조건문을 재정의로 교체
: 고찰
* 리팩토링 개론
: 리팩토링은 무엇인가
: 리팩토링은 왜 해야 하나
: 리팩토링은 어떨 때 필요한가
: 팀장에게 어떻게 말을 꺼내나
: 리팩토링 관련 문제들
: 리팩토링과 설계
: 리팩토링과 성능
: 리팩토링의 유래
* 코드의 구린내
: 중복 코드
: 장황한 메서드
: 방대한 클래스
: 과다한 매개변수
: 수정의 산발
: 기능의 산재
: 잘못된 소속
: 데이터 뭉치
: 강박적 기본 타입 사용
: switch 문
: 평행 상속 계층
: 직무유기 클래스
: 막연한 범용 코드
: 임시 필드
: 메시지 체인
: 과잉 중개 메서드
: 지나친 관여
: 인터페이스가 다른 대용 클래스
: 지나친 관여
: 인터페이스가 다른 대용 클래스
: 미흡한 라이브러리 클래스
: 데이터 클래스
: 방치된 상속물
: 불필요한 주석
* 테스트 작성
: 자가 테스트 코드의 가치
: JUnit 테스트 프레임워크
: 테스트 추가
: 각 리팩토링 기법 절의 구성
: 참조 검색
: 리팩토링 기법의 성숙도
* 메서드 정리
: 메서드 추출
: 메서드 내용 직접 삽입
: 임시변수 내용 직접 삽입
: 임시변수를 메서드 호출로 전환
: 직관적 임시변수 사용
: 임시변수 분리
: 매개변수로의 값 대입 제거
: 메서드를 메서드 객체로 전환
: 알고리즘 전환
* 객체 간의 기능 이동
: 메서드 이동
: 필드 이동
: 클래스 추출
: 클래스 내용 직접 삽입
: 대리 객체 은폐
: 과잉 중개 메서드 제거
: 외래 클래스에 메서드 추가
: 국소적 상속확장 클래스 사용
* 데이터 체계화
: 필드 자체 캡슐화
: 데이터 값을 객체로 전환
: 값을 참조로 ㅂ전환
: 참조값을 값을 ㅗ전환
: 배열을 객체로 전환
: 관측 데이터 복제
: 클래스의 단방향 연결을 양뱡향으로 전환
: 클래스의 양방향 연결을 단방향으로 전환
: 마법 숫자를 기호 상수로 전환
: 필드 캡술화
: 커렉션 캡슐화
: 레코드를 데이터 클래스로 전환
: 분류 부호를 클래스로 전환
: 분류 부호를 하위클래스로 전환
: 분류 부호를 ㅈ상태/전략 패턴으로 전환
: 하위클래스를 필드로 전환
* 조건문 간결화
: 조건문 쪼개기
: 중복 조건식 통합
: 조건문의 공통 실행 코드 빼내기
: 제어 플래그 제거
: 여러 겹의 조건문을 감시 절로 전환
: 조건문을 재정의로 전환
: null 검사를 널 객체에 위임
: 어설션 넣기
* 메서드 호출 단순화
: 메서드명 변경
: 매개변수 추가
: 매개변수 제거
: 상태 변경 메서드와 값 반환 메서드를 분리
: 메서드를 매개변수로 전환
: 매개변수를 매개변수로 전환
* 일반화 처리
: 필드 상향
: 메서드 상향
: 생성자 내용 상향
: 메서드 하향
: 필드 하향
: 항위클래스 추출
: 상위클래스 추출
: 인터페이스 추출
: 계층 병합
: 템플릿 메서드 형성
: 상속을 위임으로 전환
: 위임을 상속으로 전환
* 복합리팩토링
: 상속 구조 정리
: 절차 코드를 객체로 전환
: 도메인 로직을 표현과 분리
: 계층구조 추출
* 리팩토링, 재사용, 현실성
: 현실성 검토
: 개발자가 리팩토링을 꺼리는 이유
: 현실성 다시 검토하기
: 리팩토링 자료와 참고문헌
: 소프트웨어 재사용과 기술 변경이 미치는 영향
'Programming > Blah Blah' 카테고리의 다른 글
행동 트리(Behavior Tree) (0) | 2019.12.07 |
---|---|
C# 프로젝트 관리 툴? (0) | 2019.11.16 |
소프트웨어 테스트 방식 (0) | 2019.11.05 |
Voxelize Shadow Map (0) | 2019.10.27 |
Gitea 사용해보기 (0) | 2019.08.14 |
데드 레커닝(Dead Reckoning) (0) | 2019.05.31 |
SharpNav (0) | 2018.09.01 |
123 (0) | 2018.06.21 |