CS/소프트웨어개발방법론

리펙토링

씩씩한 IT블로그 2022. 3. 1. 11:22
반응형

리펙토링이란

- 프로그램 내부 구조를 개선하는것으로 외부에서 보는 프로그램 동작은 변하지 않는다

- 유지 보수성을 향상시키고, 품질을 높이는 활동

- 소규모 변경 후 동작여부를 테스트하고 다음 리펙토링의 단계로 진행. 만약 작동하지 않을경우 리펙토링 undo

 

리펙토링의 장점

- 복잡한 코드가 단순화 가독성이 높아진다

- 디버깅이 용이해진다

- 요구사항 변경에 빠르게 대응할 수 있다.

 

리펙토링 수행절차

1. 조직구성 

2. 수행 통제 : 변경관리, 형상관리 

3. 수행기법 : 디자인 패턴

4. 테스트 : 단위/통합 테스트, 회귀테스트

5. 결과 정리 : 문서화, 현행화

 

리펙토링 기법

1. 메소드 정리 

    - extract method : 그룹으로 묶을 수 있는 코드조직을 별도의 매소드로 뽑아냄

    - replace parameter with meathod : A매소드의 파라미터가 B매소드의 결과값이면 A매소드 내부에서 B매소드를 호출

   

2. 객체간 기능 이동

    - extract class : 두개의 클래스가 해야할 일을 하나의 클래스가 하고 있는 경우 새로운 클래스를 만들어 기존 클래스의 기능을 추출

    - extract subclass : 어떤 클래스가 일부 인스턴스에 의해서만 사용되는 기능을 가지고 있으면 해당 기능을 담당하는 서브클래스 만듦

    - extract interface : 여러 클라이언트가 한 클래스의 인터페이스의 동일한 부분집합을 사용하고 있으면 부분집합을 인터페이스로 뽑아내는것

3. 이름

    - rename meathod : 매소드의 이름을 목적이 명확하게 들어나도록 수정

4. 추측성 일반화

    - inline meathod : 매소드 코드가 단순, 명확하다면 매소드를 사용하지 않고 그냥 쓰는 것

굳이 moreThanFiveLateDeliveries를 쓸 필요가 없다

    - collapse hierarchy : 슈퍼클래스와 서브클래스가 별로 다르지 않다면 하나로 통합

5. 중복

    - replace magic number with symbolic constant : 특별한 의미를 갖고 있는 숫자는 상수를 만들어 의미가 잘 드러나도록 이름짓고 대체

중력가속도는 특별한 값이므로 상수(변수)로 만들어 준다

    - pull up field : 두 서브 클래스가 동일한 필드를 가지고 있으면, 그 필드를 수퍼 클래스로 옮긴다

    - pull up method : 동일한 일을 하는 매소드가 여러 서브클래스에서 가지고 있으면 해동 메소드를 수퍼클래스로 옮긴다

 

* 출처 : https://refactoring.guru/ (리팩토링 관련 정보 다수존재)

 

 

반응형