반응형 독서72 [리팩터링] 챕터07 캡슐화(7-7 위임 숨기기) 😀 책에서 기억하고 싶은 내용을 써보세요. manager = aPerson.department.manager; manager = aPerson.managr; class Person { get manager() {return this.department.manager;} 배경 모듈화 설계를 제대로 하는 핵심은 캡슐화다. 캡슐화는 모듈들이 시스템의 다른 부분에 대해 알아야 할 내용을 줄여준다. 캡슐화가 잘 되어 있다면 무언가를 변경해야 할 때 고려해야 할 모듈 수가 적어져서 코드를 변경하기가 훨씬 쉬워진다. 객체 지향을 처음 배울 때는 캡슐화란 필드를 숨기는 것이라고 배운다. 그러다 경험이 쌓이면서 캡슐화의 역할이 그보다 많다는 사실을 깨닫는다. 서버 객체의 필드가 가리키는 객체(위임 객체)의 메서드를 호출.. 2022. 6. 29. [리팩터링] 챕터07 캡슐화(7-6 클래스 인라인하기) 😀 책에서 기억하고 싶은 내용을 써보세요. class Person { get officeAreaCode() {return this._telephoneNumber.areaCode;} get officeNumber() {return this._telephoneNumber.number;} } class TelephoneNumber { get areaCode() {return this._areaCode;} get number() {return this._number;} class TelephoneNumber { get officeAreaCode() {return this._officeAreaCode;} get officeNumber() {return this._officeNumber;} 배경 클래스 인라인하기는.. 2022. 6. 26. [리팩터링] 챕터07 캡슐화(7-5 클래스 추출하기) 😀 책에서 기억하고 싶은 내용을 써보세요. class Person { get officeAreaCode() {return this._officeAreaCode;} get officeNumber() {return this._officeNumber;} } class Person { get officeAreaCode() {return this._telephoneNumber.areaCode;} get officeNumber() {return this._telephoneNumber.number;} } class TelephoneNumber { get areaCode() {return this._areaCode;} get number() {return this._number;} } 배경 메서드와 데이터가 너무 많은.. 2022. 6. 22. [리팩터링] 챕터07. 캡슐화(7-4 임시 변수를 질의 함수로 바꾸기) 😀 책에서 기억하고 싶은 내용을 써보세요. 리팩터링 전 const basePrice = this._quantity * this._itemPrice; if (basePrice > 1000) return basePrice * 0.95; else return basePrice * 0.98; 리팩터링 후 get basePrice() {this._quantity * this._itemPrice;} ... if (this.basePrice > 1000) return this.basePrice * 0.95; else return this.basePrice * 0.98; 배경 함수 안에서 어떤 코드의 결괏값을 뒤에서 다시 참조할 목적으로 임시 변수를 쓰기도 한다. 임시 변수를 사용하면 값을 계산하는 코드가 반복되는 걸.. 2022. 6. 18. [리팩터링] 챕터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. 이전 1 2 3 4 ··· 12 다음