KWSStudy

데이타 체계화

Refactoring - 데이타 체계화

21 minute read

필드 자체 캡슐화 필드에 직접 접근하고 있는데 필드에 대한 결합이 이상해지면 get/set 메소드를 만들어 필드에 접근. 동기 직접 접근 방식 : 절차적인 개발진행중 데이타 변경이 일어날 수 있는 소지가 있음. 간접 접근 방식 : 객체지향 필드를 직접 접근하지 않으므로 정보 은닉 및 의도하지 않은 데이터 변경이 안된다. 필드 자체 캡슐화를 실시해야 할 가장 절실할 시점은 상위클래스 안의 필드에 접근하되 이 변수 접근을 하위클래스에서 계산된 값으로 재정의해야 할때다. 먼저 필드를 자체 캡슐화한 후 필요할때 읽기 메서드와 쓰기 메서드를 재정의하면 된다.

객체 간의 기능 이동

Refactoring - 객체 간의 기능 이동

13 minute read

객체 간 이동이 가능한 상황 및 상황별 리팩토링 기법 기능을 넣을 적절한 위치를 찾는 경우 메서드 이동(Move Method) 필드 이동(Move Field) 방대해진 클래스의 정리 또는 클래스 기능이 너무 적은 경우 클래스 추출(Extract Class) - 기능이 너무 많아 방대해진 클래스 클래스 직접 삽입(Inline Class) - 리팩토링 결과로 클래스 내에 기능이 너무 작아진 경우 다른 클래스로 합침 다른 클래스(대리 클래스)를 이용할 경우 대리 객체 은폐(Hide Delegate) - 대리 클래스가 사용 중이라는 것을 외부에 감춤 과잉 중개 메서드 제거(Remove Middle Man) - 대리 객체 은폐시 대리 클래스를 사용 중인 클래스의 인터페이스가 변경될 때 클래스의 원본 코드에 접근할 수 없는 상황에서 수정 불가능한 클래스의 기능을 이동해야 할 때 외래 클래스에 메서드 추가(Introduce Foreign Method) - 기능을 이동할 메서드가 한두개 뿐일 때 국소적 상속확장 클래스 사용(Introduce Local Extension) - 기능을 이동할 메서드가 세개 이상일 때 메서드 이동 (Move Method) 메서드가 자신이 속한 클래스보다 다른 클래스의 기능을 더 많이 사용할 때 → 그 메서드가 가장 많이 이용하는 클래스 안에서 비슷한 내용의 메서드를 작성 → 기존 메서드는 간단한 대리 메서드로 전환하던지 아예 삭제 동기 언제 적용하는게 좋을까?

리팩토링 기법 카탈로그

Refactoring - 리팩토링 기법 카탈로그

1 minute read

리팩토링 기법 카탈로그에 대해 1. 각 리팩토링 기법 절의 구성 카탈로그 부분의 각 리팩토링 기법은 다음과 같은 5개의 하위 절로 구성했다. 이름 : 각종 리팩토링 기법을 구별하기 위한 필수적인 요소, 카탈로그의 각 절 제목으로도 사용했다. 요약 : 기법의 적용 시점과 목적을 설명. 이부분을 보면 자신에게 필요한 리팩토링 기법을 더 빨리 찾을 수 있다. 동기 : 기법을 실시하는 이유와 실시하지 말아야 할 경우를 설명한다. 방법 : 기법을 수행하는 절차를 단계적으로 간단명료하게 설명한다.

코드의 구린내

Refactoring - 코드의 구린내

5 minute read

  1. 코드의 구린내 구린게 있으면 그 부분을 바로 잡으세요. 리팩토링을 어떨 때 시작하고 어떨 때 그만둬야 할지 판단하는 일은 리팩토링 기법을 적용하는 방법만큼 중요하다. 1. 중복코드 구린내의 제왕 중복코드. 똑같은 코드 구조가 두 군데 이상 있을 때는 그 부분을 하나로 통일하면 프로그램이 개선 한 클래스의 두 메서드 안에 같은 코드가 들어있는경우 -> 메서드 추출 기법을 적용해서 겹치는 코드를 빼내어 별도의 메서드로 만들고 그 메서 드를 두 곳에서 호출 수퍼클래스의 두 하위 클래스에 같은 코드가 들어 있는 경우 -> 메서드 추출 기법을 적용해서 중복을 없앤 후 메서드 상향 기법을 적용하면 된다.