본문 바로가기
TIL (Today I Learned)

[CS] 리팩토링이란

by Bokoo14 2024. 2. 18.

[참고]

 

 

📝 리팩토링이란?

코드의 가독성, 유지보수성, 확장성을 향상시키는 데 목적을 두며 코드를 리팩토링함으로써 버그를 줄이고 기능 개선 및 추가 작업을 쉽게 수행할 수 있다. 

코드의 품질을 향상시키기 위해 코드 스멜이라 불리는 문제점들을 찾아 개선하는 작업

코드 스멜: 중복 코드, 긴 함수, 긴 매개변수 목록, 전역 데이터, 가변 데이터 등과 같은 요소들로 인해 코드의 가독성과 유지보수성이 저하되는 상황

 

코드 리팩토링을 통해 코드의 가독성, 유지보수성 향상, 중복 코드 제거를 통해 코드의 재사용성이 증가된다.

코드가 명확하고 구조화되어 있다면 협업하는데에도 도움되기 때문에 리팩토링은 필요하다. 

 

📝 리팩토링의 수행 원칙 

💡목적 유지

리팩토링은 코드의 동작을 변경하지 않는다. 기존 코드의 외부 동작은 그대로 유지

사용자에게 보여지는 기능이나 기대되는 결과는 변경되지 않음

내부적인 코드 구조와 디자인에 집중하여 가독성, 유지보수성, 확장성 등을 향상시킴

 

💡 단계적 접근

큰 규모의 변경을 작은 단위로 나누어 진행

코드를 조금씩 수정하고 테스트할 수 있기 때문에 안전성을 보장할 수 있다.

 

💡 테스트와 함께

테스트 슈트를 작성하고, 리펙토링을 수행 한 후에도 기존에 작성한 테스트들이 예상대로 동작하는지 확인한다.

이를 통해 리펙토링으로 인해 기능에 영향을 미치지 않는지 확인할 수 있다.

테스트를 통해 코드 변경의 안정성을 보장할 수 있다. 

 

📝 리팩토링 시 주의할 점

새로운 기능의 추가없이 코드의 구조를 재조정하는 작업이다.

따라서 리팩토링을 수행할 때는 외부 기능에 영향을 주지 않도록 주의해야 한다.

 

💡 결과의 변경없이 구조만 수정

리팩토링을 수행한 후에도 코드의 동작이 제대로 보존되는지 확인하기 위해 테스트를 진행해야 한다.

테스트 주도 개발(Test-Driven-Development, TDD) 방법론을 사용하면 리팩토링 과정을 안전하게 수행할 수 있다.

 

💡 작은 단위로의 진행

리팩토링 작업은 작은 단위로 세분화하여 진행해야 한다.

한 번에 많은 변화를 가하면 버그를 발견하기 어렵거나 변경 사항을 되돌리기 어려울 수 있으므로, 작은 단계로 진행하며 안정성을 유지해야 한다.

 

💡 협업과 변경 사항 공유

리팩토링은 협업과 함께 이루어져야 한다.

다른 개발자들과 리팩토링 작업에 대한 변경 사항을 공유하고 의견 차이나 충돌을 해결해야 한다. 

'TIL (Today I Learned)' 카테고리의 다른 글

[TIL] Ping  (0) 2024.05.10
[CS] 클린코드  (0) 2024.02.18
[Swift] MVVM 패턴  (0) 2024.02.17
[CS] 동기(Sync), 비동기(Async)  (1) 2024.02.16
[Swift] ARC (Automatic Reference Counting)  (0) 2024.02.16