29건의 항목
임시 변수를 없애는 방법을 알아보자.
임시 변수 제거를 계속해보자.
정리한 함수를 다시보자. 편함을 위해 중첩상태가 너무 많아졌다.
우리가 하고 싶었던 HTML을 만들기 위해 계산 단계와 포맷팅 단계를 분리하는 작업을 진행해보자.
만약에 연극 종류가 추가되면 어떻게 될까? 이제 다형성으로 변경할 시점이다. 다형성을 활용해 계산코드 재구성하기 지금까지 구성한 코드를 한번 보자.
마지막으로 변경된 코드를 보며 생각해보자.
이제 리팩터링 전반에 적용되는 원칙 몇 가지를 살펴보자. 리팩터링 정의 리팩터링이라는 개발 용어는 굉장히 두루뭉실한 의미로 통용된다. (많은 개발 용어가 그렇다) 하지만 이를 엄격하게 정의해야 유용하다.
냄새나면 당장 갈아라. 어떻게 하는지에 대해서 지금까지 배웠다. 하지만, “언제” 시작하고 그만할지를 판단하는 것은 또 다른 얘기다. 어떤 “냄새”를 맡았을 때 손을 대야할까? 기이한 이름 이름으로 이게 뭐하는 것인지 딱 볼 수 있게 작성해야 한다.
리팩토링에 있어 테스트 코드는 왜 중요할까? 자가 테스트 코드의 가치 프로그래머들의 대부분의 시간은 코드치는 시간이 아니다. 현상황 파악 / 설계 고민 / 디버깅에 많은 시간을 쓴다. 디버깅의 경우 수정자체는 금방 끝난다. 다만 찾는데 고통스럽다.
카탈로그 설명을 보기전에 어떻게 읽으면 좋은지 알아보자. 리팩터링 설명 형식 이름 개요: 핵심 개념이 무엇인가? 나중에 찾아볼 때, 이게 어떤건지 쉽게 떠올리기 위한 것.
Extract Function, 함수 추출하기에 대해 알아보자.
Inline Function, 함수 인라인하기를 알아보자.
Extract Variable, 변수 추출하기를 알아보자.
Inline Variable, 변수 인라인하기를 알아보자.
Change Function Declaration, 함수 선언 바꾸기에 대해 알아보자. 요약 코드 function circum(radius) { .. } function circumference(radius) { ..
Encapsulate Variable, 변수 캡슐화하기를 알아보자.
Rename Variable, 변수 이름 바꾸기를 알아보자. 요약 코드 let a = height * width; let area = height * width; 배경 명확한 프로그래밍의 핵심은 이름 짓기다.
Introduce Parameter Object, 매개변수 객체 만들기에 대해 알아보자.
Combine Functions into Class, 여러 함수를 클래스로 묶기를 알아보자.
Combine Functions into Transform, 여러 함수를 변환 함수로 묶기를 알아보자.
Split Phase, 단계 쪼개기를 알아보자.
Encapsulate Record, 레코드 캡슐화 하기를 알아보자.
Encapsulate Collection, 컬렉션 캡슐화 하기를 알아보자.
Replace Primitive With Object, 기본형을 객체로 바꾸기를 알아보자.
Decompose Conditional, 조건문 분해하기를 알아보자.
Consolidate Conditional Expression, 조건식 통합하기를 알아보자.
Replace Nested Conditional With Guard Clauses, 중첩 조건문을 보호 구문으로 바꾸기를 알아보자.
Replace Conditional With Polymorphism, 조건부 로직을 다형성으로 바꾸기를 알아보자.
창발성 단순한 결합이 복잡한 결과를 나타내는 것을 뉴런 하나만으로 의미가 있을까? 뉴런이 모여 어떠한 인식을 하기 위해서는 수십억개의 뉴련이 상호작용해야 한다. 즉, 미시적인 부분의 각각의 특성만으로는 설명할 수 없는 전체로서 나타나는 복잡한 현상을 말한다.