전체 글 5

Development
5. 이벤트 기반 사고방식 - [이벤트 기반 프로그래밍 시리즈]

시작하며처음 이벤트 기반 프로그래밍을 시도하면 생각보다 어렵게 느껴질 수 있습니다. 이벤트 기반 프로그래밍은 함수 중심의 방식과는 다른 사고방식을 요구하기 때문입니다. 이 글에서는 이벤트 기반 프로그래밍에서 어떤 관점을 가지고 코드를 작성해야 하는지 함께 살펴보겠습니다. 이벤트 기반 사고방식1. Fire and Forget이벤트 기반 프로그래밍이 어려운 첫번째 이유는, 우리가 다른 객체의 함수를 호출하고 결과를 확인하는 것에 익숙해져 있기 때문입니다. 그런데 이벤트의 발행은 어떤 사건이 발생했다고 알리는 행위에 불과할 뿐이기에 아무 결과도 알려줄 수가 없습니다. 이벤트는 발행되는 순간 이미 내 손을 떠난 것입니다. 발행하고 잊는 것. 이것이 바로 Fire and Forget입니다. 말로만 들어서는 이해하..

Development
4. 이벤트 객체 작성 원칙 - [이벤트 기반 프로그래밍 시리즈]

시작하며지난 포스트에서는 이벤트의 조건을 알아보고간단한 이벤트 시스템을 구현해 보았습니다.이벤트 시스템은 옵저버 패턴으로 구현할 수 있었습니다.이벤트 종류의 식별은 강타입 언어의 타입 시스템을 이용하면 편리합니다.이벤트 객체는 이벤트를 자유롭게 구독하고이벤트에 대한 반응 또한 스스로 정할 수 있어야 합니다.때문에 이벤트 시스템은 전역적이어야 합니다.이번에는 이벤트 시스템을 이용하여간단한 이벤트 객체를 직접 구현하면서,이벤트 객체를 작성할 때의 원칙과 팁을 이야기해 보려고 합니다.이벤트에 반응하는 이벤트 객체업계에 널리 퍼진 정의는 아니지만,이벤트 객체가 무엇인지 간단하게 다시 되짚어봅시다.이벤트 기반 프로그래밍의 개념 포스트에서 말씀드렸듯이벤트 객체는 이벤트에 반응하며 스스로를 완벽히 책임지는 객체입니다..

Development
3. 이벤트 구현하기 - [이벤트 기반 프로그래밍 시리즈]

시작하며지난 글 "이벤트 기반 프로그래밍이란"에서는이벤트란 무엇인지와 함께 이벤트 객체의 특징에 대해 살펴봤습니다.복습해보자면,이벤트는 '일어난 사건'입니다.이벤트 객체는 이벤트에 반응하고, 필요하다면 새로운 이벤트를 발행하는 객체입니다.이벤트 객체는 함수객체와 달리 능동적이며 독립적이고 수평적입니다.이벤트 기반 프로그래밍이 왜 좋은지, 이벤트 객체가 어떻게 동작하는지는 알겠는데...이걸 어떻게 구현하면 좋을까요?구현하는데 있어 주의점은 없을까요?이벤트의 조건이벤트 객체를 구현하기에 앞서,먼저 이벤트라는 개념을 구현해야 합니다.이벤트의 구현에는 조건이 몇가지 있습니다. 1. 이벤트는 전역적이어야 합니다이벤트 객체는 스스로 이벤트를 선택하는 객체입니다.이벤트 객체가 이벤트를 선택하기 위해선무슨 이벤트가 존..

Development
2. 이벤트 기반 프로그래밍이란 - [이벤트 기반 프로그래밍 시리즈]

시작하며지난 글 우리의 코드가 스파게티인 이유에서 함수의 단점을 짚어보았습니다.언급했듯이, 함수는 호출하지 않으면 절대로 동작하지 않습니다.인터페이스와 함수로 구현한 객체는 수동적입니다.객체의 수동적인 특성 때문에 객체간에는 상하관계가 강제됩니다.이로 인해 프로그램 구조는 점점 경직되며 파악과 수정을 곤란하게 합니다.'이벤트'라는 개념을 적절히 사용하면이러한 문제들을 해결할 수 있습니다.이번 글에서는 자세한 구현이나 코드를 소개함에 앞서이벤트 기반 프로그래밍의 기본적인 개념을 살펴보고자 합니다.이벤트 이해하기우선 이벤트란 무엇일까요?이벤트 기반 프로그래밍을 알려면 이벤트를 먼저 이해해야 합니다.이벤트는 간단히 말하면 '일어난 사건'이라 할 수 있습니다.누군가가 어떤 말을 했다거나,다른 사람에게 돈을 이체..

Development
1. 우리의 코드가 스파게티인 이유 - [이벤트 기반 프로그래밍 시리즈]

닿을 수 없는 클린코드저는 14년 동안 프로그래밍을 해 왔습니다. 저는 깔끔한 코드를 좋아합니다.그런데 지금까지 직접 작성했던 그 어떤 소스 코드에서도 깔끔하다는 느낌을 받아본 적이 없습니다. 깔끔한 코드를 위해 많은 고민을 하고 공부를 하며, 책도 많이 읽고 적용해보았지만, 그러한 문제의식이 말끔히 해결된 적은 없는 것 같습니다. 프로젝트 초기에, 나중을 생각해서 열심히 인터페이스화와 관심사 분리를 해봐도 코드를 추가하고 수정을 반복하다 보면 어느 순간 눈앞에는 스파게티 코드가 펼쳐져 있곤 합니다. 왜 이렇게 되는 걸까요? 곰곰이 생각해본 끝에 한 가지 의문에 이르게 되었습니다.왜 우리는 함수를 중심으로 코딩을 하는가우리는 함수를 중심으로 코드를 작성합니다. 새로운 기능을 만들 때를 생각해봅시다. 일반..