배경
데이터 구조는 프로그램을 이해하는 데 큰 역할을 한다.
데이터 구조는 깔끔하게 관리해야 한다. 개발을 이어갈 수록 데이터를 더 잘 이해하게 될 것이다. 깊어진 이해를 프로그램에 반드시 반영해야 한다.
예시
const organization = {name: "애크미 구스베리",country:"GB"}; |
위 상수에 name 을 title로 변경해야 한다. 이 객체는 코드베이스 곳곳에서 사용된다. |
const organization = {name: "애크미 구스베리",country:"GB"}; //organization 레코드 클래스로 캡슐화 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;} } |
레코드를 클래스 캡슐화한 덕에 변경을 작은 단계로 나눠할 수 있게 됐다. 작은 단계라 함은 잘못될 일도 작아진다는 말과 같다. |
const organization = {name: "애크미 구스베리",country:"GB"}; class Organization{ constructor(data){ //생성자와 접근자를 구분하여 점진적으로 변경 this._title = data.name; this._country = data.country; } get name(){return this._title;} set name(arg){ this._title = arg;} get country(){return this._country;} set country(arg){ this._country = arg;} } |
const organization = {name: "애크미 구스베리",country:"GB"}; class Organization{ constructor(data){ //생성자 조정 this._title = (data.title !== undefined) ? data.title : data.name; this._country = data.country; } get name(){return this._title;} set name(arg){ this._title = arg;} get country(){return this._country;} set country(arg){ this._country = arg;} } |
//호출하는 곳 수정 const organization = new Organization({title: "애크미 구스베리",country:"GB"}); |
class Organization{ constructor(data){ this._title = data.title; this._country = data.country; } get name(){return this._title;} set name(arg){ this._title = arg;} get country(){return this._country;} set country(arg){ this._country = arg;} } |
const organization = new Organization({title: "애크미 구스베리",country:"GB"}); class Organization{ constructor(data){ this._title = data.title; this._country = data.country; } get title(){return this._title;} set title(arg){ this._title = arg;} get country(){return this._country;} set country(arg){ this._country = arg;} } |
지금 과정은 데이터 구조가 여러 곳에서 참조되고 있을 때 리팩터링 과정이다.
만약 참조되는 곳 적거나 한 곳이라면 캡슐화도 필요없었을 것이다.
복잡할 수록 이처럼 작게 나눠서 정복해야한다.
자바스크립트가 아닌 데이터 구조를 불변으로 만들 수 있는 언어는 캡슐화 대신 데이터 구조를 값을 복제해 새로운 이름으로 선언 후 복제한 새 값을 사용하게 바꾸는 식으로 진행한다.
'IT책, 강의 > 리팩터링' 카테고리의 다른 글
09 - 데이터 조직화 - 파생 변수를 질의 함수로 바꾸기 (0) | 2023.08.27 |
---|---|
09 - 데이터 조직화 - 파생 변수를 질의 함수로 바꾸기 (0) | 2023.08.24 |
09 - 데이터 조직화 - 변수 쪼개기 (0) | 2023.08.14 |
08 - 기능이동 - 죽은 코드 제거하기 (0) | 2023.08.13 |
08 - 기능이동 - 반복문 쪼개기 (0) | 2023.08.10 |