반응형 독서72 [리팩터링] 챕터07. 캡슐화(7-1 레코드 캡슐화하기) 😀 책에서 기억하고 싶은 내용을 써보세요. 모듈을 분리하는 가장 중요한 기준은 아마도 시스템에서 각 모듈이 자신을 제외한 다른 부분에 드러내지 않아야 할 비밀을 얼마나 잘 숨기느냐에 있을 것이다. 이러한 비밀 중 대표적인 데이터 구조는 레코드 캡슐화하기와 컬렉션 캡슐화하기로 숨길 수 있다. 심지어 기본형 데이터도 기본형을 객체로 바꾸기로 캡슐화할 수 있다. 클래스는 본래 정보를 숨기는 용도로 설계되었다. organization = {name: "애크미 구스베리", country: "GB"}; class Organization { constructor(data) { this._name = data.name; this._country = data.country; } get name() {return this.. 2022. 6. 11. [리팩터링] 챕터06. 기본적인 리팩터링(6-11 단계 쪼개기) 😀 책에서 기억하고 싶은 내용을 써보세요. const orderData = orderString.split(/\\s+/); const productPrice = priceList[orderData[0].split("-")[1]]; const orderPrice = parseInt(orderData[1]) * productPrice; const orderRecord = parseOrder(order); const orderPrice = price(orderRecord, priceList); function parseOrder(aString) { const values = aString.split(/\\s+/); return ({ productID: values[0].split("-")[1], quantit.. 2022. 6. 8. [리팩터링 ]챕터06. 기본적인 리팩터링(6-10 여러 함수를 변환 함수로 묶기) 😀 책에서 기억하고 싶은 내용을 써보세요. function base(aReading) {...} function taxableCharge(aReading) {...} function enrichReading(argReading) { const aReading = _.cloneDeep(argReading); aReading.baseCharge = base(aReading); aReading.taxableCharge = taxableCharge(aReading); return aReading; } 배경 소프트웨어는 데이터를 입력받아서 여러 가지 정보를 도출하곤 한다. 이렇게 도출된 정보는 여러 곳에서 사용될 수 있는데, 그러다 보면 이 정보가 사용되는 곳마다 같은 도출 로직이 반복되기도 한다. 저자는 이런 .. 2022. 6. 7. [리팩터링] 챕터06. 기본적인 리팩터링(6-9 여러 함수를 클래스로 묶기) 😀 책에서 기억하고 싶은 내용을 써보세요. 리팩터링 전 function base(aReading) {...} function taxableCharge(aReading) {...} function calculateBaseCharge(aReading) {...} 리팩터링 후 class Reading { base() {...} taxableCharge() {...} calculateBaseCharge() {...} } 배경 공통 데이터를 중심으로 긴밀하게 엮여 작동하는 함수 무리를 발견하면 클래스 하나로 묶는다 클래스로 묶으면 이 함수들이 공유하는 공통 환경을 더 명확하게 표현할 수 있다. 각 함수에 전달되는 인수를 줄여서 객체 안에서의 함수 호출을 간결하게 만들 수 있다. 이런 객체를 시스템의 다른 부분에 .. 2022. 6. 6. [리팩터링] 챕터06. 기본적인 리팩터링(6-8 매개변수 객체 만들기) 😀 책에서 기억하고 싶은 내용을 써보세요. 배경 데이터 항목 여러 개가 이 함수에서 저 함수로 몰려다니는 경우를 자주 본다. 저자는 이런 데이터 무리를 발견하면 데이터 구조 하나로 모아주곤 한다. 데이터 뭉치를 데이터 구조로 묶으면 데이터 사이의 관계가 명확해진다는 이점을 얻는다. 함수가 이 데이터 구조를 받게 하면 매개변수 수가 줄어든다. 같은 데이터 구조를 사용하는 모든 함수가 원소를 참조할 때 항상 똑같은 이름을 사용하기 때문에 일관성도 높여준다. 절차 적당한 데이터 구조가 아직 마련되어 있지 않다면 새로 만든다. 개인적으로 클래스로 만드는 걸 선호한다. 나중에 동작까지 함께 묶기 좋기 때문이다. 저자는 주로 데이터 구조를 값 객체(Value Object)로 만든다고 한다. 테스트한다. 함수 선언 .. 2022. 6. 6. [리팩터링] 챕터06. 기본적인 리팩터링(6-7 변수 이름 바꾸기) 😀 책에서 기억하고 싶은 내용을 써보세요. 리팩터링 전 let a = height * width; 리팩터링 후 let area = height * width; 배경 명확한 프로그래밍의 핵심은 이름짓기다. 변수는 프로그래머가 하려는 일에 관해 많은 것을 설명해준다. 단, 이름을 잘 지었을 때만 그렇다. 특히 이름의 중요성은 그 사용 범위에 영향을 많이 받는다. 한 줄짜리 람다식에서 사용하는 변수는 대체로 쉽게 파악할 수 있다. 맥락으로부터 변수의 목적을 명확히 알 수 있어서 한 글자로 된 이름을 짓기도 한다. 자바스크립트와 같은 동적 타입 언어라면 이름 앞에 타입을 드러내기도 한다. 함수 호출 한 번으로 끝나지 않고 값이 영속되는 필드라면 이름에 더 신경 써야 한다. 절차 폭넓게 쓰이는 변수라면 변수 캡슐.. 2022. 6. 4. 이전 1 2 3 4 5 ··· 12 다음