본문 바로가기

더 좋은 개발자 되기/Object Oriented Programming4

책임 주도 설계(RDD) 와 단일 책임 원칙(SRP) 에서 말하는 책임은 다르다 들어가며 최근 우연한 기회에 객체지향의 사실과 오해 와 오브젝트라는 책을 쓰신 조영호님과 객체지향에 대한 간단한 토론을 할 수 있는 자리가 생겨 그 자리에서 oop 의 다양한 것들에 대해서 이야기를 나누었다. 회사 동료이자 내가 있던 팀의 리드 개발자였던 분의 블로그 글인 조영호님과의 객체지향에 대해서 이야기하기, happy-coding-day.tistory.com 에서 나온 몇가지 주제중 한가지에 대해서 이야기해보려 한다. 조영호님과 객체지향에 대해서 이야기하기 트레바리에서 (전) CTO님 덕분에 오브젝트 저자 조영호님과 티타임을 가질 수 있는 기회가 생겼습니다. 티타임 자리에서 물었던 질문에 대해서 기록을 남깁니다. 아쉽게도 사진은 찍지 못했지만, happy-coding-day.tistory.com .. 2023. 1. 8.
왜 자바는 반복에 있어 repeat 대신 iterate 라고 할까? 를 통해 알아보는 캡슐화와 메시지 글을 시작하며 먼저 이야기하고싶은 것은 이번 글이 자바의 Iterator 나 Iteratable 인터페이스에 대해서 동작 원리에 다루지 않는다. 단지 자바가 왜 이러한 용어를 채택하였는지를 내가 배웠던 객체지향을 통해서 알아본다. 객체지향의 캡슐화와 메시지에 대해서 초점을 맞추어 이야기해보도록 하겠다 들어가며 java 나 kotlin 에는 iterator 라는 인터페이스가 존재한다. iterator 는 특정 컬렉션이나 엔티티의 순서를 나타낼 수 있으며, 순차적 접근을 할 수 있도록 하는 책임을 수행하는 인터페이스이다. 실제 구현된 코드를 봐보자. 이 글을 이해하는데 중요한 것은 아니지만 아래의 코드는 int type 의 iterator, IntIterator 의 구현체 중 하나인 ArrayIntItera.. 2023. 1. 6.
객체는 특정 문맥에 결합되면 안된다. (feat. 로또 게임 구현하기) 목차 동기 객체는 특정 문맥에 결합되어서는 안된다 로또 게임 구현하기 Overview 컨텍스트 독립성 어떻게 해결할 수 있을까? 동기 조영호 님의 오브젝트 스터디를 진행하면서 책의 절반의 진도가 나갔을 즈음 중간 점검 느낌으로 실습 주제를 하나 정해서 코딩을 해보기로 했다. 우리는 실습의 주제로 next-step 에서 진행하는 실습 과제 하나인 로또 게임 구현하기 로 정했다. 실습에서 실제 우리가 책에서 배운 내용을 적용해보며 코드를 객체지향적으로 구성해보는 실습을 하였는데, 꽤나 재미있는 내용이 있어서 그 경험을 공유하려 한다. 객체는 특정 문맥에 결합되어서는 안된다 객체는 특정 문맥에 결합되어서는 안된다는 이야기가 있다. 특정 문맥에 결합되는 순간 객체는 딱딱해지고 결정되어진다. 클린 아키텍처에서 말.. 2022. 7. 21.
Spring Data 모듈의 save() 는 CQS 를 지키지 않는 것일까? with 참조투명성 목차 배경 Spring Data 는 CQS 를 지키지 않는 것일까? CQS 란? 참조 투명성 배경 최근에 발행했던 글이 하나가 있다. CQRS 패턴에 대한 오해 풀기 라는 글에서 CQS 에 대해서 잠깐 언급한다. [Architecture Pattern] CQRS 패턴에 대한 오해 풀기 목차 도입 Query 와 Command 란? CQRS 란 CQRS 의 장단점 도입 회사 시스템이 전통적인 CRUD 애플리케이션에서 Event 기반의 시스템으로 바뀌어 가는 과정에 팀에 합류를 하게 되어 나의 최근 가장 큰 관심 wonit.tistory.com 해당 글의 포스팅을 준비하면서 CQS 에 대해 작성하다 한가지 큰 오해를 했었는데 오늘 오브젝트라는 책을 읽다보니 그 오해를 풀 수 있었다. 오늘은 그 오해에 대해서 .. 2022. 6. 17.