반응형 독서/리팩터링23 [리팩터링] 챕터07. 캡슐화(7-3 기본형을 객체로 바꾸기) 😀 책에서 기억하고 싶은 내용을 써보세요. orders.filter(o => "high" === o.priority || "rush" === o.priority); orders.filter(o => o.priority.higherThan(new Priority("normal"))) 배경 단순한 출력 이상의 기능이 필요해지는 순간 그 데이터를 표현하는 전용 클래스를 정의한다. 시작은 기본형 데이터를 단순히 감싼 것과 큰 차이가 없을 것이라 효과가 미미하다. 하지만 나중에 특별한 동작이 필요해지면 이 클래스에 추가하면 되니 프로그램이 커질수록 점점 유용한 도구가 된다. 절차 아직 변수를 캡슐화하지 않았다면 캡슐화한다. 단순한 값 클래스를 만든다. 생성자는 기존 값을 인수로 받아서 저장하고, 이 값을 반환하는.. 2022. 6. 18. [리팩터링] 챕터07. 캡슐화(7-2 컬렉션 캡슐화하기) 😀 책에서 기억하고 싶은 내용을 써보세요. class Person { get courses() {return this._courses;} set courses() {this._courses = aList;} } class Person { get courses() {return this._courses.slice();} addCourse(aCourse) { ... } removeCourse(aCourse) { ... } 배경 저자는 가변 데이터를 모두 캡슐화하는 편이다. 데이터 구조가 언제 어떻게 수정되는지 파악하기 쉬워서 필요한 시점에 데이터 구조를 변경하기도 쉬워진다. 객체 지향 개발자들은 캡슐화를 적극 권장한다. 컬렉션을 다룰 때 하는 실수 컬렉션 변수로의 접근을 캡슐화하면서 게터가 컬렉션 자체를 반.. 2022. 6. 16. [리팩터링] 챕터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. 이전 1 2 3 4 5 6 다음