분류 전체보기 (96) 썸네일형 리스트형 리팩터링 2판 챕터8 - 기능 이동 1. 함수 옮기기 *컨텍스트란? 클래스나 모듈 한 컨텍스트에 관련 깊은 요소들만 남기기 위해서 함수를 옮기는 리팩터링을 진행한다. 그럼 언제 옮겨야하는가? 어떤 함수가 자신이 속한 컨텍스트의 요소들보다 다른 컨텍스트를 더 많이 참조할 때 어떤 것에도 의존하지 않고 독립성을 가지는 함수일 때 2. 필드 옮기기 *필드란? 클래스를 구성하는 변수. 적합한 데이터 구조를 만들기 위해서 필드를 옮긴다. 3. 문장을 함수로 옮기기 (↔️ 문장을 호출한 곳으로 옮기기) 중복으로 사용하는 문장이 있다면 함수를 만들자 4. 문장을 호출한 곳으로 옮기기 (↔️ 문장을 함수로 옮기기) 공통된 함수가 일부 호출자에게는 다르게 동작하도록 바뀌어야할 때 해당 기법을 사용한다. 5. 인라인 코드를 함수 호출로 바꾸기 함수 호출을 .. 리팩터링 2판 챕터7 - 캡슐화 책에서 말하는 캡슐화란? 데이터 접근을 함수로만 한정하는 것을 말한다. 이점 1. 데이터에 대한 접근을 한정하면서 의도치 않은 변경을 예방한다. 이점 2. 데이터 입출력시 로직 추가가 쉽다. 1. 레코드 캡슐화하기 레코드란? 데이터를 표현하는 기본적인 자료 구조를 말한다. const date = { year: 2021, month: 11, day: 21 }; 레코드 캡슐화란 이러한 데이터에 대한 입출력을 제한하는 함수를 만드는 것이다. 변수 자체는 물론, 그 내용을 조작하는 방식도 통제하기 위해서 레코드를 캡슐화한다. 2. 컬렉션 캡슐화하기 컬렌션이란? List, Map, Set 같은 자료형을 말한다. 저자는 가변 데이터는 모두 캡슐화하는 편이다. 데이터 구조가 언제 어떻게 수정되는지 파악하기 쉬워서 필.. 리팩터링 2판 챕터6 - 기본적인 리팩터링(2) 9. 여러 함수를 클래스로 묶기 공통 데이터를 중심으로 긴밀하게 엮여 작동하는 함수 무리가 있으면 클래스로 묶는다. 클래스로 묶을 때의 장점은 클라이언트가 객체의 핵심 데이터를 변경할 수 있고, 파생 객체들을 일관되게 관리할 수 있다는 것이다. *함수를 객체처럼 패턴 https://martinfowler.com/bliki/FunctionAsObject.html *단일 접근 원칙 https://martinfowler.com/bliki/UniformAccessPrinciple.html 10. 여러 함수를 변환 함수로 묶기 변환 함수란 원본 데이터를 입력받아서 필요한 정보를 모두 도출한 뒤, 각각을 출력 데이터 객처 하나로 리턴하는 것이다. 공통 데이터를 다루는 함수 무리를 하나로 묶는다는 점에서 9번 기법과.. 리팩터링 2판 챕터6 - 기본적인 리팩터링(1) 5장은 나머지 뒷 장을 읽는 방법을 소개하는 안내서와 같다. 6~12장에서 설명할 리팩터링 기법을 설명하는 형식을 기술해놓았다. 각 기법마다 이름, 개요, 배경, 절차, 예시 순으로 설명하겠다고 한다. 6장은 기본적인 리팩터링에 대해서 설명하고 있다. 책 본문에 나와있는 예시를 참고하면 이해가 쉬운데, 각 기법을 간단히 정리해봤다. 1. 함수 추출하기 (↔️ 함수 인라인하기) 코드를 언제 독립된 함수로 만드는가? 두 번 이상 사용될 코드에? 아니다. 목적과 구현을 분리해서 코드를 독립된 함수로 만드는 것이다. 함수를 짧게 많이 만들면 호출이 많아질까봐 걱정할 필요는 없다. 함수가 짧으면 캐싱하기가 더 쉬워서 컴파일러가 최적화될 수 있다. 2. 함수 인라인하기 (↔️ 함수 추출하기) 함수의 이름은 목적이 .. 리팩터링 2판 챕터4 - 테스트 구축하기 저자는 성공적인 리팩터링을 위해선 테스트 스위트 Test Suite가 필요하다고 말한다. 테스트 스위트란 테스트 케이스의 묶음을 말한다. 자가 테스트 코드를 만들어서 수시로 테스트하는 것이 중요하다. 테스트 방법 테스트 프레임워크를 활용한다. 대표적인 자바스크립트 테스트 프레임워크는 모카이다. 테스트는 위험 요인을 중심으로 작성해야한다. 단순히 필드를 읽고 쓰는 접근자는 테스트하지 않는다. 일부러 오류를 만들어서 코드가 제대로 동작하는지 확인해보는 것이 중요하다. 숫자를 테스트하는 경우에는 0이나 음수를 넣어서 테스트한다. 문제가 생길 가능성을 생각해보고 테스트해보자. 테스트는 설정-실행-검증 또는 조건-발생-결과 단계를 거친다. 만족스러울 때까지 충분한 테스트를 반복적으로 진행한다. 실패와 에러의 차이.. 테이블 중앙 정렬하기 .center { margin-left: auto; margin-right: auto; } 이전 1 ··· 9 10 11 12 13 14 15 16 다음