1장은 리팩터링의 진행 절차에 대한 구체적인 예시를 보여주는 리팩터링 맛보기 장이다. 하지만 1장의 읽어보고 내용을 요약하는 게 무의미하다고 보여서 과감히 생략하고... 책을 읽는데 앞서 중요하다고 보이는 서문의 내용 일부를 대신 정리했다. 리팩터링이란 - 리팩터링은 겉으로 드러나는 코드의 기능(겉보기 동작)은 바꾸지 않으면서 내부 구조를 개선하는 방식으로 소프트웨어를 수정하는 과정이다. - 버그가 생길 가능성을 최소로 줄이면서 코드를 정리하는 정제된 방법으로 코드를 작성하고 난 뒤에 설계를 개선하는 일이다. - 예전부터 따르던 소프트웨어 개발 방법은 설계부터 하고 코드를 작성하는 순서다. 하지만 시간이 흐르면서 코드는 수정되고 시스템의 설계에 맞춘 구조는 점차 뒤죽박죽이 되어간다. 공학에 가깝던 코딩 ..
리팩터링 적용 방법을 아는 것과 제때 적용할 줄 아는 것은 다르다. 리팩터링을 언제 시작하고 언제 그만할지를 판단하는 일은 리팩터링의 작동 원리를 아는 것 만큼 중요하다. 그리고 우리는 리팩터링이 필요한 코드들에 일정한 패턴이 있다는 사실을 발견했다. 이를 설명하는데 냄새(악취)란 표현을 사용했다. 하지만 리팩터링을 언제 멈춰야 하는지를 판단하는 정확한 기준을 제시하지 않을 것이다. 우리 경험에 따르면 숙련된 사람의 직관만큼 정확한 기준은 없다. 종료 기준보다는 리팩터링하면 해결할 수 있는 문제의 징후를 제시하겠다. 3.1 기이한 이름 (Mysterious Name) 코드를 명료하게 표현하는데 가장 중요한 요소 하나는 바로 '이름'이다. 함수, 모듈, 변수, 클래스 등은 그 이름만 보고도 각각이 무슨 일..
마지막 장이다. 이번 장에서는 객체 지향 프로그래밍에서 가장 유명한 특성인 상속을 다룬다. 이는 아주 유용한 동시에 오용하기 쉽다. 더욱이 상속은 발등에 불이 떨어져서야 잘못 됐음을 알아차리는 경우가 많다. 특정 기능을 상속계층구조의 위나 아래로 옮길 때 12.1 메서드 올리기 12.2 필드 올리기 12.3 생성자 본문 올리기 12.4 메서드 내리기 12.5 필드 내리기 계층 사이에 클래스를 추가하거나 제거하는 12.8 슈퍼클래스 추출하기 12.7 서브클래스 제거하기 12.9 계층 합치기 필드값에 따라 동작이 달라지는 코드의 경우 필드를 서브클래스로 대체하고 싶을 때 12.6 타입 코드를 서브클래스로 바꾸기 상속이 잘못된 곳에서 사용되거나 나중에 환경이 변해 문제가 생길 경우 12.10 서브클래스를 위임..
조건부 로직은 프로그램을 복잡하게 만드는 주요 원흉이다. 따라서, 이해하기 쉽게 바꾸는 리팩터링이 필요하다. 복잡한 조건문은 10.1 조건문 분해하기 논리적 조합을 명확하게 다듬는 10.2 중복 조건식 통합하기 핵심 로직에 앞서 무언가를 검사해야 할 때 10.3 중첩 조건문을 보호 구문으로 바꾸기 똑같은 분기 로직이 여러 곳에 등장한다면 10.4 조건부 로직을 다형성으로 바꾸기 null 과 같은 특이 케이스의 처리 로직이 거의 똑같다면 10.5 특이 케이스 추가하기 (널 객체 추가하기) 특정 조건일때만 제대로 동작하는 코드가 있는 경우 10.6 어서션 추가하기 제어 플래그를 이용해 코드 동작 흐름을 변경하는 코드는 10.7 제어 플래그를 탈출문으로 바꾸기 10.1 조건문 분해하기 (Decompose Co..
모듈을 잘 분리하는 가장 중요한 기준은 각 모듈이 자신을 제외한 외부에 드러내지 않아야 할 비밀을 얼마나 잘 숨기느냐에 있다. 대표적인 데이터 구조 캡슐화 7.1 레코드 캡슐화하기 7.2 컬렉션 캡슐화하기 기본형 데이터 캡슐화 7.3 기본형을 객체로 바꾸기 길어진 함수를 쪼개는 7.4 임시 변수를 질의 함수로 바꾸기 추출하기/인라인의 클래스 버전 7.5 클래스 추출하기 7.6 클래스 인라인하기 클래스 사이의 연결 관계를 숨기는 7.7 위임 숨기기 너무 많이 숨길 경우를 위한 반대 기법 7.8 중개자 제거하기 알고리즘을 통채로 바꿔야 할 때 7.9 알고리즘 교체하기 7.1 레코드 캡슐화하기 (Encapsulate Record) 개요 레코드(해시)를 데이터 클래스로 전환하는 리팩터링 해시맵은 다양한 프로그래..
첫번째 카탈로그인 6장에는 가장 기본적이고 많이 사용하는 리팩터링들로 구성되어 있다. 가장 많이 사용하는 리팩터링 6.1 함수 추출하기 6.3 변수 추출하기 반대로 진행하는 리팩터링 6.2 함수 인라인하기 6.4 변수 인라인하기 함수와 변수 최적화 6.5 함수 선언 바꾸기 6.6 변수 캡슐화하기 6.7 변수 이름 바꾸기 6.8 매개변수 객체 만들기 함수를 고수준 모듈로 묶기 6.9 여러 함수를 클래스로 묶기 6.10 여러 함수를 변환 함수로 묶기 모듈의 처리 과정을 명확한 단계로 구분 짓기 6.11 단계 쪼개기 6.1 함수 추출하기 (Extract Function) 개요 가장 많이 사용하는 리팩터링 코드가 하는일을 파악한 다음, 함수로 추출하고 목적에 맞는 이름 붙이는 작업이다 적용 시점 코드가 무슨 일..
- Total
- Today
- Yesterday
- 그림으로 배우는 HTTP & Network
- HTTP
- 코드스멜
- 변경함수
- 리팩터링이란
- 그림으로 공부하는 IT 인프라 구조
- 조건부 로직
- Debugging
- Debug It! 실용주의 디버깅
- 안심 첫 문장
- AWS
- 매개변수화
- 디버깅
- 지시의 언어
- 일잘러
- amazon vpc
- 코드악취
- SSL
- amazon aurora
- 제어플래그
- 질의함수
- Debug
- 리팩토링
- 박소연
- aws fargate
- 일 잘하는 사람은 단순하게 말합니다
- https
- Refactoring
- 마틴파울러
- 위임
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |