일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- GraphQL
- #파밍
- #크랙미 9번
- #크랙미3번
- #크랙미
- #abex크랙미
- #크랙미 10번
- #보안뉴스
- #고클린
- #크랙미4번
- java8
- #abex크랙미4번
- springframework
- #심플즈
- #리버싱
- #크랙미2번
- #크랙미 5번
- Spring
- leetcode
- 리버싱
- Easy
- #심플즈 크랙미
- java
- #보안이슈
- #abex
- Today
- Total
Halo World
Refactoring(리팩토링) 본문
| 리팩토링이란?
나쁜 디자인의 코드를 좋은 디자인으로 바꾸는 방법
> 외부동작을 바꾸지 않으면서 내부 구조를 개선하는 방법으로, 소프트웨어 시스템을 변경하는 프로세스
> 소프트웨어의 기능은 바꾸지 않음
| 리팩토링의 특징
- 소프트웨어의 디자인을 개선시킴
- 소프트웨어를 더 이해하기 쉽게 함
- 프로그램의 구조를 명확히 함으로써 버그를 잡도록 도와줌
- 소프트웨어의 개발 속도를 향상시킴
| 리팩토링을 언제 해야하는가?
리팩토링 자체를 목적으로 삼기 보다는, 다른 것에 대한 수단으로 리팩토링을 함
- 삼진 규칙 : 스트라이트 세 개면 리팩토링을 함
(어떠한 것을 처음 할 때는 그냥하고, 두 번째에도 중복되도록 그냥 하고, 세 번째로 비슷한 것을 하게 되면 그때 리팩토링을 한다)
- 기능을 추가할 때 리팩토링을 함
(수정해야하 코드에 대한 이해가 높아지며 기능 추가가 쉬운 디자인으로 바꿀 수 있음)
- 버그를 수정해야 할 때 리팩토링을 함
- 코드 검토를 할 때 리팩토링을 함
| 리팩토링을 할 때의 문제점
> 데이터베이스
대부분의 비즈니스 애플리케이션은 데이터베이스 스키마와 밀접하게 결합되어 있다. 데이터베이스 스키마와 객체 모데간의 종속을 최소화하기 위해 계층 구조로 만들었다 하더라고, 스키마를 변경하려면 데이터를 migrate 해야하는데 시간도 오래걸리고 위험도도 크다.
> 인터페이스 변경
객체를 사용하는 부분을 변경하지 않고도, 객체의 내부 구조를 안전하게 바꿀 수 있지만, 인터페이스를 변경하면 어떤 일이 발생할지 모르기 때문에 인터페이스를 유지하는 것은 중요하다.
그러나, 많은 리팩토링이 인터페이스를 변경시킨다
* 언제 리팩토링을 하지 말아야 하까?
- 코드를 처음부터 다시 작성해야 할 때
- 마감일에 가까울 때
참조
http://codereview.tistory.com/3
'개발 지식 > SW ENGINEERING' 카테고리의 다른 글
리팩토링 수행 절차 (0) | 2017.06.02 |
---|