본문 바로가기
반응형

독서/리팩터링23

[리팩터링] 챕터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.