본문 바로가기

Book/Refactoring 2nd5

6~12. 리팩터링 이 포스팅은 리팩터링 2판으로 학습한 내용을 토대로 정리한 포스팅입니다. 6~12장은 1장에서 사용했던 리팩토링 패턴들을 하나씩 별도의 예제와 함께 학습하는 것이기 때문에 예제 코드를 첨부하지는 않고 어떠한 방법들이 있는지에 대해 정리해 보겠습니다. 6. 기본적인 리팩터링 리팩터링 이름 반대 함수 추출하기 함수 인라인하기 함수 인라인하기 함수 추출하기 변수 추출하기 변수 인라인하기 함수 선언 바꾸기 변수 캡슐화하기 변수 이름 바꾸기 매개변수 객체 만들기 여러 함수를 클래스로 묶기 여러 함수를 변환 함수로 묶기 단계 쪼개기 7. 캡슐화 리팩터링 이름 반대 레코드 캡슐화하기 컬렉션 캡슐화하기 기본형을 객체로 바꾸기 임시 변수를 질의 함수로 바꾸기 클래스 추출하기 클래스 인라인하기 클래스 인라인하기 클래스 추.. 2023. 1. 8.
4. 테스트 구축하기 이 포스팅은 리팩터링 2판으로 학습한 내용을 토대로 정리한 포스팅입니다. 리팩터링은 분명 가치 있는 도구지만, 그것만으로는 부족합니다. 리팩터링을 제대로 하려면 불가피하게 저지르는 실수를 잡아주는 견고한 테스트 스위트가 뒷받침돼야 합니다. 리팩터링을 하지 않더라도 좋은 테스트를 작성하는 일은 개발 효율을 높여줍니다. (p.133) 4.1 자가 테스트 코드의 위치 프로그래머들이 어떻게 일하는지 가만히 살펴보면 실제로 코드를 작성하는 시간의 비중은 그리 크지 않음을 발견할 수 있습니다. 대부분의 시간은 디버깅에 씁니다. 버그 수정 자체는 대체로 금방 끝납니다. 진짜 끔찍한 건 버그를 찾는 여정입니다. 모든 테스트를 완전히 자동화하고 그 결과까지 스스로 검사하게 만들자. 테스트 스위트는 강력한 버그 검출 도구.. 2023. 1. 8.
3. 코드에서 나는 악취 이 포스팅은 리팩터링 2판으로 학습한 내용을 토대로 정리한 포스팅입니다. 리팩터링을 언제 시작하고 언제 그만할지를 판단하는 일은 리팩터링의 작동 원리를 아는 것 못지않게 중요합니다. 하지만 이런 일들을 '언제' 해야 하는지에 대해서는 명확하게 정립된 규칙이 없습니다. 마틴 파울러 님도 명확하게 규칙을 제시하지는 않고 아래와 같은 말로 대신했습니다. 냄새나면냄새나면 당장 갈아라. - 켄트 벡 할머니의 육아 원칙 냄새는 일종의 코드가 풍기는 악취라고 볼 수 있으며, 냄새가 나는 코드로써 24가지 예시를 듭니다. 3.1 기이한 이름 (Mysterious Name) 코드는 단순하고 명료하게 작성해야 하며, 코드를 명료하게 표현하는 데 가장 중요한 요소는 바로 '이름'입니다. 그래서 그 이름만 보고도 각각이 무슨.. 2023. 1. 8.
2. 리팩터링 원칙 이 포스팅은 리팩터링 2판으로 학습한 내용을 토대로 정리한 포스팅입니다. 리팩터링이라는 용어는 명사로도 쓸 수 있고, 동사로도 쓸 수 있고 그에 따라 의미가 달라집니다. 리팩터링: [명사] 소프트웨어의 겉보기 동작은 그대로 유지한 채, 코드를 이해하고 수정하기 쉽도록 내부 구조를 변경하는 기법 리팩터링: [동사] 소프트웨어의 겉보기 동작은 그대로 유지한 채, 여러 가지 리팩터링 기법을 적용해서 소프트웨어를 재구성하다. 위의 의미를 통해 리팩터링이란 특정한 방식에 따라 코드를 정리하는 것만이 리팩터링이라고 할 수 있습니다. 누군가 "리팩터링하다가 코드가 깨져서 며칠이나 고생했다"라고 한다면, 십중팔구 리팩터링한 것이 아니다. (p.80) 리팩터링은 전과 후의 코드가 똑같이 동작해야 하며, 리팩터링의 목적은.. 2023. 1. 8.
1. 리팩터링: 첫 번째 예시 이 포스팅은 리팩터링 2판으로 학습한 내용을 토대로 정리한 포스팅입니다. 리팩터링이란 무엇일까? 그렇다면 리팩토링을 왜 해야 할까? 앞서 리팩토링의 설명에서 가독성과 유지보수를 편하게 라는 단어가 나오는데 이 2개의 단어가 왜 중요할까? 우리는 대부분 혼자서 개발을 하지 않고 다른 사람들과 협업을 통해 개발을 하게 됩니다. 이때 협업을 보다 편하게 하려면 내가 작성한 코드가 다른 사람들에게 보다 쉽게 읽혀야 하고(가독성) 기능을 추가함에 있어서 기존에 작성해둔 코드를 크게 변경하지 않고 기능을 추가할 수 있어야 한다(유지보수를 편하게) 그러면 리팩토링을 함으로써 얻게 되는 이점, 또는 결과는 무엇일까? 개인적으로는 비용이라고 생각합니다. 가독성이 높아지고, 유지보수가 편해진다는 것은 시간이 절약된다는 뜻.. 2023. 1. 8.