본문 바로가기

분류 전체보기375

마틴 파울러 - 리팩토링 Replace loop with Pipeline const names = []; for(const i of input) { if(i.job === "programmer") names.push(i.name); } const names = input .filter(i => i.job === "programmer") .map(i => i.name) ; for 문과 if문으로 구성된 코드를 filter 와 map으로 바꾼다. motivation 파이프라인을 사용하면 코드를 더 간결하게 작성할 수 있다. 로직을 보기 쉽게 작성하자. 순서 예제 csv 파일을 읽는 아래 코드가 있다고 한다. function acquireData(input) { const lines = input.split("\n"); let firstLine = true; const result.. 2019. 11. 20.
[리팩토링]Replace switch statement with Object 참고한 글 https://ultimatecourses.com/blog/deprecating-the-switch-statement-for-object-literals 아래와 같은 코드에서 보통 switch case 문을 사용해서 개발을 한다. function getDrink (type) { if (type === 'coke') { type = 'Coke'; } else if (type === 'pepsi') { type = 'Pepsi'; } else if (type === 'mountain dew') { type = 'Mountain Dew'; } else if (type === 'lemonade') { type = 'Lemonade'; } else if (type === 'fanta') { type =.. 2019. 11. 8.
마틴 파울러 - 리팩토링 - Remove Middle Man 프로그램에서는 getter 함수를 사용해서 데이터에 접근하기도 한다. 불필요한 getter 함수를 없애고 코드를 간결하게 만든다. 여기서 불필요한 getter 함수가 바로 Middle Man이다. 코드를 통해서 단계를 살펴본다. manager = aPerson.manager; class Person { get manager() { return this.department.manager; } Person 클래스 안에는 manager 함수가 있다. manager 함수는 department의 manager를 리턴한다. manager = aPerson.department.manager; 클래스의 getter를 사용하지 않고 person.department.manager로 가져온다. 리팩토링 기법인 High De.. 2019. 11. 6.
마틴 파울러 - 리팩토링 - Extract Class 소스 코드에서 각 클래스의 책임과 역할은 명확해야 한다. 하나의 클래스가 여러 개의 책임과 역할을 가지고 있다면 리팩토링이 필요하다. 여러 개의 책임을 가지는 클래스를 리팩토링해본다. 순서는 이렇다. 1. 책임을 어떻게 분리할지 기준을 정한다. 2. 책임을 넘길 자식 클래스를 만든다. 부모 클래스가 할 역할이 바뀐다면 역할과 책임에 맞게 클래스 이름을 바꾼다. 3. 부모클래스와 자식클래스를 연결할 때 자식 클래스의 인스턴스를 만든다. 4. 부모 클래스에서 자식 클래스로 옮길 변수들을 옮긴다. 5. 부모 클래스에서 자식 클래스로 옮길 함수들을 옮긴다. 6. 클래스, 함수 이름을 적절하게 바꾼다. 필요없는 함수는 지운다. 7. 새로운 자식 클래스를 더 만들어서 분리할지 결정한다. 코드를 통해서 단계를 살펴본.. 2019. 10. 31.
마틴 파울러 - 리팩토링 - Split Phase 리팩토링 기법. Split Phase 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], quantity:.. 2019. 10. 18.