본문 바로가기

SW Engineering

Refactoring - Encapsulation Encapsulate Record 레코드 데이터를 클래스로 캡슐화하고 접근자를 만든다. Before organization = {name: "Acme Gooseberries", country: "GB"}; After class Organization { constructor(data) { this._name = data.name; this._country = data.country; } get name() {return this._name;} set name(arg) {this._name = arg;} get country() {return this._country;} set country(arg) {this._country = arg;} } Motivation Record structure 는 관련된 ..
Refactoring 예제 연극 해주고 돈 받는 회사 관객 수, 연극 장르에 따라 요금이 다르다. 현재 연극 종류는 비극과 희극 두 종류 나중에 할인 해 주는 크레딧 제공 plays.json… { "hamlet": {"name": "Hamlet", "type": "tragedy"}, "as-like": {"name": "As You Like It", "type": "comedy"}, "othello": {"name": "Othello", "type": "tragedy"} } The data for their bills also comes in a JSON file: invoices.json… [ { "customer": "BigCo", "performances": [ { "playID": "hamlet", "audience": 5..
Shotgun surgery vs. Divergent Change shotgun surgery와 divergent change는 Refactoring에 나오는 code smell 중 하나이다. 언뜻 비슷해 보이지만 완전히 반대 되는 개념이다. 이 두가지의 code smell은 SRP를 위반할 때 발생하는 대표적인 증상이다. SRP (Single Responsibility Principle) 단일 책임 원칙 : 클래스는 하나의 책임을 가진다. 동일한 이유에 대한 변경되는 부분은 같이 있어야 하고, 다른 이유로 변경되는 부분은 떨어져 있어야 한다. 즉 클래스가 변경될 이유는 하나여야 한다. Shotgun surgery 하나의 클래스의 변경이 다른 많은 클래스의 변경을 일으킨다. 동일한 이유 때문에 변경되는 부분이 여러 클래스에 분산되어 있을 때 발생 Divergent Ch..