서론
과거에는 기능구현이 더욱 중요했지만, 현재는 코드 가독성의 중요성이 점점 더 부각되고 있다.
과거 프로젝트를 리팩토링하며 리팩토링에 대한 개념을 정리하고자 한다.
리팩토링이란 ? ?
리팩토링이란 코드의 구조와 디자인을 개선하는 작업이다.
기능에는 영향을 주지 않으면서 가독성을 높이고 유지보수를 용이하게 만드는 것이다.
즉, 코드의 품질을 향상시키고 버그를 줄이며, 향후 개발과 유지보수를 보다 효율적으로 할 수 있다.
리팩토링 과정
1. 코드의 이해
-> 코드의 기능, 구조, 의존성 등을 판단하여 어느 부분을 개선해야 할지 판단해야 한다.
2. 테스트 작성
-> 리팩토링 전,후 에 테스트 결과가 변함이 없어야 한다.
3. 작은 단위로 분리
-> 큰 변경사항을 한번에 적용하지 않고, 쪼개서 적용하며 테스트 한다.
3. 코드 개선
-> 가독성을 높이고 중복 코드를 메서드화 시키며, 코드의 구조를 개선한다.
객체지향을 기반으로 유지보수가 쉽게 설계해야 한다
리팩토링 방법
1. 메서드 추출(Extract Method)
-> 긴 메서드를 작은 단위로 분리하여 코드의 가독성을 높이고 중복을 줄일 수 있다.
2. 변수 추출(Extract Variable)
-> 복잡한 표현식을 변수로 추출하여 코드를 이해하기 쉽게 만들 수 있다.
3. 클래스 추출(Extract Class)
-> 하나의 클래스가 너무 많은 책임을 지고 있다면, 관련된 기능들을 새로운 클래스로 추출한다.
4. 메서드 옮기기(Move Method)
-> 메서드가 자신이 속한 클래스보다 다른 클래스에 더 적합하다면 옮긴다.
5. 필드 옮기기(Move Field)
-> 필드가 자신이 속한 클래스보다 다른 클래스에 더 적합하다면 옮긴다.
6. 조건문을 다형성으로 바꾸기(Replace Conditional with Polymorphism)
-> 복잡한 조건문을 다형성을 활용하여 깔끔한 코드로 변환할 수 있다.(각각 클래스를 생성하여 상속받는 형태)
7. 중복 코드 제거(Remove Duplication)
-> 중복 코드를 찾아서 공통된 부분을 추출하여 메서드로 만들거나 상속 등을 활용하여 중복을 제거할 수 있다.
8. 불필요한 코드 제거(Remove Unused Code)
-> 사용되지 않는 코드를 제거하여 코드의 가독성을 높이고 유지보수를 용이하게 할 수 있다.
9. 인터페이스 추출(Extract Interface)
-> 클래스의 일부 기능을 별도의 인터페이스로 추출하여 코드의 유연성과 재사용성을 높인다.
10. 클래스 이름 변경(Rename Class)
-> 더욱 명확하고 의미 있는 이름으로 변경할 수 있다.
이 외에도 다양한 기법들이 있으며, 가장 중요한 점은 리팩토링을 수행할 때는 항상 코드를 변경하기 전에
테스트 코드를 작성하고 기능을 검증해야 한다.
그럼 다음엔 실제 1년전 진행했던 프로젝트를 리팩토링 해보겠다.
'Back-End > Spring' 카테고리의 다른 글
[spring] 예외처리? Exception Handling? (0) | 2022.08.17 |
---|---|
[JPA] JPA Repository 메소드로 쿼리없이 코딩 (0) | 2022.08.09 |
[JPA] 필드와 컬럼 매핑 어노테이션 정리 (0) | 2022.08.01 |
[JPA] ddl-auto 주의 및 실무 적용 (0) | 2022.08.01 |
[spring boot] 간단한 방명록 만들기 [2편] (0) | 2022.06.16 |