Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
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 31
Tags more
Archives
Today
Total
관리 메뉴

Pure Software Engineer :)

[Refactoring] What is refactoring? 본문

Software Engineering/Programming

[Refactoring] What is refactoring?

HelloJaewon 2014. 5. 17. 19:21

Refactoring - written by by Martin Fowler

 

프로그래머라면 반드시 읽어봐야 할 책중에 하나인 리팩토링에 관한 책.

리팩토링에 대한 개념부터 시작해서 코드예제까지

조금씩 읽으면서 정리를 해보자.

오늘은 그 시작!!

 

 

리팩토링이란?

 - 외부 동작을 바꾸지 않으면서 내부 구조를 개선하는 방법

 - 소프트웨어 시스템을 변경하는 프로세스

 - 버그가 끼어 들 가능성을 최소화

 - 코드를 정리하는 정형화된 방법

 

그렇다면 리팩토링은 반대는?

퍼포먼스 최적화!

 

퍼포먼스 최적화란?

 - 리팩토링과 마찬가지로 소프트웨어의 동작을 바꾸지는 않음

 - 하지만, 리팩토링과 달리 종종 코드를 이해하기 더 어렵게 만듦

 - 이것은 필요한 퍼포먼스를 얻기 위해서는 감수해내야 하는 것

 

리팩토링을 할때 두 가지 구별된 작업을 위해 시간을 나누어야 한다.

1. 기능을 추가할때

 - 기존 코드를 건드려서는 안 되고 단지 새로운 기능만을 추가해야 함

2. 리팩토링 할때

 - 기능을 추가해서는 안 되고 단지 코드의 구조에만 신경 써야 함

 - 어떤 테스트도 추가하지 않음 (리팩토링을 위한 인터페이스 변경은 제외)

 

이렇게 리팩토링을 할때 두 가지 작업을 반복하게 될 수 있는데,

이때 프로그래머는 자신이 현재 무엇을 하고 있는지 반드시 인지하고 있어야 한다는 의미에서

'두개의 모자' 라는 용어를 사용

 

책을 읽다가 와닿는 부분이 있었다.

저자는 익숙하지 않은 코드를 이해하는 데 도움을 받고자 리팩토링을 사용한다고 한다.

최근 회사에서 다른사람이 오래전 작성해둔 코드를 인수인계 받으면서 이해할 필요가 있었는데,

보통 문서화가 잘 되어 있지 않은경우 코드를 보면서 이해할 수 밖에 없다.

또한, 나는 코드가 최고의 문서라고 생각한다.

리팩토링을 하기위해서는 코드를 이해하지 않으면 불가능하기에,

코드도 이해하면서 구조도 개선하는 일석이조의 효과를 볼 수 있다.