본문 바로가기

programming study/Refactoring

(21)
Refactoring - 리팩터링 원칙(3) 본 내용은 마틴 파울러의 Refactoring 2판을 토대로 작성되었습니다. 리팩터링 원칙 리팩터링, 아키텍처 이전에는 코딩을 시작하기 전에 소프트웨어 설계와 아키텍처를 어느정도 또는 거의 완료를 해야한다고 알려졌음 리팩터링은 수년 동안 운영되던 소프트웨어라도 아키텍처를 대폭 변경 가능 탄탄한 테스트가 뒷받침되어야 함 리팩터링이 아키텍처에 미치는 실질적인 효과는 요구사항 변화에 자연스럽게 대응하도록 코드 베이스를 잘 설계해줌 아키텍처를 확정지으려 할 때의 문제는 소프트웨어 요구사항을 사전에 모두 파악해야 함 실현하기 어려운 목표 소프트웨어를 실제 사용해보고 업무에 미치는 영향을 직접 확인하고 나서야 원하는 바를 알 수 있음 유연성 매커니즘 향후 변경에 유연하게 대처할 수 있는 것 다양한 예상 시나리오에 ..
Refactoring - 리팩터링 원칙(2) 본 내용은 마틴 파울러의 Refactoring 2판을 토대로 작성되었습니다. 리팩터링 원칙 리팩터링하는 이유 코드를 건강한 상태로 유지 다양한 용도로 활용 소프트웨어 설계가 좋아짐 리팩터링하지 않으면 내부 설계(아키텍처)가 썩기 쉬움 아키텍처를 충분히 이해하지 못한 채 단기 목표만을 위해 코드를 수정하다 보면 기반 구조가 무너지기 쉬움 설계를 파악하기 어려워질 수록 설계를 유지하기 어려워지고 설계가 부패되는 속도는 더욱 빨라짐 설계가 나쁘면 코드가 길어지고 같은 일을 하는 코드가 여러 곳에 나타남 중복 코드 제거는 설계 개선 작업의 중요한 한 축을 차지 중복코드를 제거하면 모든 코드가 언제나 고유한 일을 수행함을 보장할 수 있음 소프트웨어를 이해하기 쉬워 짐 컴퓨터에게 시키려는 일과 표현한 코드의 차이를..
Refactoring - 리팩터링 원칙(1) 본 내용은 마틴 파울러의 Refactoring 2판을 토대로 작성되었습니다. 리팩터링 원칙 리팩터링 정의 리팩터링[명사] : 소프트웨어의 겉보기 동작은 그대로 유지한 채, 코드를 이해하고 수정하기 쉽도록 내부 구조를 변경하는 기법 함수 추출하기, 조건부 로직을 다형성으로 바꾸기 등 리팩터링(하다)[동사] : 소프트웨어의 겉보기 동작은 그대로 유지한 채, 여러가지 리팩터링 기법을 적용해서 소프트웨어를 구성하다. 재구성(Restructuring) : 코드 베이스를 정리하거나 구조를 바꾸는 모든 작업 리팩터링은 재구성 중 특수한 형태 리팩터링은 큰 작업을 잘게 나누어 오히려 작업을 더 빨리 처리 리팩터링은 단계들이 체계적으로 구성 리팩터링은 디버깅하는 데 시간을 뺏기지 않음 겉보기 동작(Observavle B..
Refactoring - 첫 번째 예시(2) 본 내용은 마틴 파울러의 Refactoring 2판을 토대로 작성되었습니다. 리팩터링: 첫 번째 예시 임의 변수를 질의 함수로 바꾸기 임시 변수들 때문에 로컬 범위에 존재하는 이름이 늘어나서 추출 작업이 복잡해 짐 임시 변수는 자신이 속한 함수에서만 의미가 있음 이러한 변수들을 함수로 추출 임시 변수를 제거해서 얻는 가장 큰 장점은 추출 작업이 훨씬 쉬워짐 유효범위를 신경 써야 할 대상이 줄어들기 때문 이후 해당 변수가 사용되던 부분은 변수 인라인하기 리팩터링과 성능 리팩토링을 하면서, 데이터 조회를 더 하게 되거나 반복문이 늘어날 수도 있음 대부분의 경우에는 성능에 큰 영향은 없음 설사 느려지더라도, 제대로 리팩터링된 코드베이스는 그렇지 않은 코드보다 성능을 개선하기 훨씬 수월 반복문을 쪼개는 경우, ..
Refactoring - 첫 번째 예시(1) 본 내용은 마틴 파울러의 Refactoring 2판을 토대로 작성되었습니다. 들어가기 전에 저자 마틴 파울러는? ThoughtWorks의 수석 과학자 제어 역전(Inversion of Control)과 의존성 주읩(Dependency Injection)용어를 대중화시킨 장본인 리팩토링이란? 코드를 이해하기 쉽고 수정하기 편하게 만드는 것 겉으로 드러나는 코드의 기능은 바꾸지 않으면서 내부 구조를 개선하는 방식으로 소프트웨어 시스템을 수정하는 과정 버그가 생길 가능성을 최소로 줄이면서 코드를 정리하는 정제된 방법 코드를 작성하고 난 뒤에 설계를 개선하는 것 코딩 후 설계 개선? 잘못된 설계, 엉망인 설계 -> 체계적으로 설계된 코드 예전의 소프트웨어 개발 방법은 설계부터 하고 코드를 작성하는 식 리팩토링은..