본문 바로가기

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..
동시성 프로그래밍 in Go 동시성이란? “Concurrency is about dealing with lots of things at once. Parallelism is about doing lots of things at once.” - Rob Pike 동시성(concurrency)은 한 번에 많은 것 들을 처리하는 것이고 병렬성(parallelism)은 한 번에 많은 것 들을 하는 것입니다. 일반적인 예를 들면, 우리는 조깅을 하다가 신발 끈이 풀렸을 때 잠시 멈춰서 신발끈을 고쳐 메고 다시 달립니다. 우리는 조깅과 신발끈 묶기를 함께 처리할 수 있지만 신발끈을 묶으면서 달리진 못합니다. 이것이 동시성입니다. 반면에 음악을 들으면서 조깅을 할 수 있습니다. 이것이 병렬성입니다. 프로그래밍에 관점에서 설명을 하면, 동시 프로그..
1. 함수형 프로그래밍 기초 개념 함수형 프로그래밍이란? 순수 함수(pure function)들로만 구현하는 프로그래밍 방법. 순수 함수는 부수 효과(side effect)가 없으며, 따라서 함수형 프로그래밍은 부수효과가 없는 함수들로만 프로그램을 구축한다는 의미입니다. 부수효과(Side effect) 함수에서 결과를 돌려주는 것 이외의 작업을 가리켜 부수효과라고 합니다. "결과를 돌려주는 것 이외의 작업"은 외부세계를 변경하는 작업을 말합니다. 즉 함수 밖의 상태를 변경하는 모든 작업을 부수효과라 부릅니다. 부수효과의 예참조에 의한 파라미터를 수정예외를 던지거나 오류를 발생시키면서 실행을 중단콘솔에 파일에 읽거나 쓰기(I/O)서버와 통신참조 투명성(Referential Transparency) 순수 함수를 참조 투명성이란 개념으로 공식..