mido

mido's blog about dev and design

소프트웨어 합성 Index 및 번역후기

Translation Epilogue

함수형 자바스크립트를 주제로 Eric Elliott이 medium에서 연재하는 시리즈입니다. 배열 연산, 대수적 자료구조 등 특정 주제에 초점을 맞춘 tips & tricks 이 아닌 좀 더 넓은 관점에서 함수형 패러다임을 조망하고 있으며 특히 소프트웨어 개발에서 마주칠 수 있는 많은 주제들을 합성Composition의 맥락으로 풀어내었습니다. 특......

합성과 추상화

Abstraction & Composition

소프트웨어 개발자로서 성숙해질수록 기본적인 것들에 더 큰 가치를 부여하게 됩니다. 초보자였을 때 사소해 보였던 깨달음들이 그동안의 경험들과 함께 심오한 의미를 갖게됩니다. 구글 사전에 따르면 추상화란 “그 연관성, 속성 또는 구체적인 사례와는 독립적인 무언가를 추려내는 과정” 입니다. abstraction은 라틴어 동사 _abstrahere_ 에서......

삼항연산자의 멋짐을 모르는 당신이 불쌍해

Nested Ternaries are Great

보통 삼항연산자를 중첩시키는 것은 가독성을 떨어트리기 때문에 피해야 한다고 합니다. Conventional wisdom is sometimes unwise. 사실, 삼항 연산자는 대개 if 문보다 훨씬 간단합니다. 사람들이 그 반대로 믿게되는 두 가지 이유가 있습니다. if 문에 익숙합니다. 친근성 편향^Familiarity^ ^bias^은 우리......

객체 합성이라는 숨겨진 보물

The Hidden Treasures of Object Composition

소프트웨어를 개발하는 과정에서 가장 흔히 볼 수 있는 실수 중 하나는 클래스 상속을 과도하게 사용하는 경향입니다. 클래스 상속은 기본 클래스와 하위 클래스 사이에 는 이다(is a) 관계를 만들어 코드를 재사용하는 메커니즘입니다. is a 관계 (e.g. 오리는 새이다)를 사용하여 도메인을 모델링하는 과정에서 문제가 발생할 수 있습니다. 그......

Mocking은 코드 냄새(Code Smell)입니다

Mocking is a Code Smell

코드 냄새란 일반적으로 시스템의 더 깊은 문제에 해당하에 깊숙히 숨어있는 문제를 드러내는 표면적인 표시입니다. Martin Fowler. TDD와 유닛 테스트를 할 때 가장 손이 많이 가는 부분은 테스트할 유닛을 분리하는 과정에서 필요한 mocking을 만드는 일 입니다. 몇몇 사람들은 유닛 테스트가 정말로 의미있는 일인지 의심스러워 하기도 합니다.......

JavaScript 모나드

JavaScript Monads Made Simple

모나드Monad는 특정 컨텍스트에 속한 함수를 합성하는 도구입니다. 특정 컨텍스트란 계산, 분기, I/O, 값을 반환하는 과정 등을 예로 들 수 있습니다. 모나드 타입은 리프팅 함수a => M(b)를 합성할 수 있도록 lift, flat, map을 활용해 타입을 정렬합니다. 이 과정은 결국 임의의 타입 a를 b로 맵핑하는 것이며 계산 컨텍스트 ......

함수형 자료구조

Composable Datatypes with Functions

JavaScript에서 무언가를 합성^compose^하는 가장 쉬운 방법은 함수 합성이며 함수는 객체이기 때문에 메소드가 추가 될 수 있습니다 `t`는 숫자형 인스턴스를 생성하는 팩토리입니다. 그러나 `t`의 인스턴스는 단순한 객체가 아닙니다. **함수**입니다. 즉, 일반적인 함수와 마찬가지로 합성할 수 있습니다. 기본적으로 멤버를 더하는 함수......

클래스로 합성하기가 까다로운 이유

Why Composition is Harder with Classes

이전 글에서 우리는 팩토리 함수라는 주제를 살펴봤고 여기에 함수형 믹스인도 함께 사용해서 얼마나 쉽게 객체를 합성할 수 있는지 알게 됐습니다. 이제 클래스에 대해 좀 더 자세히 알아보겠습니다. `class`의 어떤 매커니즘이 합성과 연관되어 있는지 살펴 보겠습니다. 또한 클래스를 유용하게 사용한 사례와 클래스를 안전하게 사용하는 방법에 대해 살펴 보겠......

ES6+와 팩토리 함수

JavaScript Factory Functions with ES6+

팩토리 함수는 (새로운)객체를 리턴하는 함수입니다. 그러나 클래스나 생성자 함수는 아닙니다. JavaScript에서는 모든 함수가 객체를 리턴할 수 있습니다. 이 때 `new` 키워드가 없으면 팩토리 함수입니다. JavaScript에서 팩토리 함수는 항상 매력적입니다. 클래스와 `new` 키워드의 복잡함 없이 객체 인스턴스를 쉽게 생성 할 수 있......

함수형 믹스인

functional-mixins

함수형 믹스인은 합성될 수 있는 팩토리함수입니다. 파이프라이닝되어 객체를 찍어내는 공장입니다. 각 함수는 조립 라인의 인력처럼 객체의 속성 또는 동작을 추가합니다. 함수형 믹스인은 기본 팩토리 또는 생성자가 필요하지 않습니다. 임의의 객체를 믹스인으로 전달하기만 하면 해당 객체의 향상된 버전이 반환됩니다. 실제로 현대의 모든 소프트웨어 개발은 합성으로......