독후감

· 독후감
테스트 가능성이라는 단어를 들어봤나요? 영어 단어로 Testability라고 합니다.테스트하기 쉬울수록 Testability가 높습니다. 더 나아가 테스트하기 쉬운 코드일수록 좋은 설계일 확률이 높습니다. 하지만 저를 포함한 많은 사람들이 테스트를 어려워하고 있습니다. 테스트를 어렵게 만드는 요소는 무엇일까요? 테스트를 어렵게 만드는 요소테스트를 어렵게 만드는 요소의 결론부터 말하자면 테스트하려는 대상의 입력과 출력에 있습니다. 테스트는 테스트하려는 대상의 입력을 쉽게 변경할 수 있고, 출력을 쉽게 검증할 수 있어야 작성하기 쉽습니다.하지만 숨겨진 입력이 존재하거나 숨겨진 출력이 존재한다면 테스트를 검증하기 어려워집니다. 그렇다면 숨겨진 입력과 숨겨진 출력이 대체 무엇일까요? 한번 알아봅시다.숨겨진 입력..
· 독후감
테스트 대역이란 무엇일까요? 네트워크에서 사용하는 대역(bandwith)과 비슷합니다만. 전혀 관련이 없답니다!테스트에서의 대역은 오롯이 테스트를 위해 만들어진 가짜 객체 또는 컴포넌트를 의미합니다. 아래의 상황에서 테스트코드를 짜본 적이 없는 개발자라면 공감하실 수도 있겠습니다. 회원가입을 완료하면 회원 테이블에 저장하고 환영 이메일을 보냅니다. 이런 상황에서 테스트코드를 짜야한다면 머리가 지끈지끈하지 않으신가요? 그리고 이런 고민도 할 수 있겠습니다."테스트를 할때마다 디비에 계속 저장되겠는데..?" , "더미 이메일을 계속 보내야 하나..?" 이 고민을 해봤다면 계속 글을 읽어도 좋을 거 같습니다. 저와 함께 가보시죠.아까의 상황을 다시 가져와 보겠습니다.회원가입을 완료하면 회원 테이블에 저장하고 ..
· 독후감
오랜만에 읽으면서 계속 감탄을 하게 되는 책을 접하게 되었습니다. 자바 / 스프링을 공부하고있는 여러 사람들이 있을 것입니다. 아래는 제가 이 책을 접하기 전에 처했던 상황인데요 이에 공감하는 사람들이 꽤 있지 않을까 싶습니다.객체지향이 중요한건 알겠는데... 스프링에는 어떻게 적용해야 하지?SOLID, 테스트, VO, DTO... 등 여러 단어는 접해봤는데 누군가 질문했을 때 떳떳하게 답 할 수 있나?계층형 구조와 헥사고날 구조? 어떤게 더 좋은거지?테스트가 중요한 건 알겠어 알겠는데 개발하면서 와닿지는 않네.. 이렇게 보니 제가 과연 자바 / 스프링 개발자라고 불려도 되는가 싶네요. 그냥 스프링부트를 쓸 줄 아는 사람 그 이상 그 이하도 아닌 거 같습니다. 하지만 이 책을 읽고나니 위의 질문에대해 자..
· 독후감
애그리거트 애그리거트는 모델을 이해하는 데 도움을 줄 뿐만 아니라 일관성을 관리하는 기준도 된다. 모델을 보다 잘 이해할 수 있고 애그리거트 단위로 일관성을 관리하기 때문에, 애그리거트는 복잡한 도메인을 단순한 구조로 만들어준다. 애그리거트는 관련된 모델을 하나로 모았기 때문에 한 애그리거트에 속한 객체는 유사하거나 동일한 라이프 사이클을 갖는다. 애그리거트에 속한 구성요소는 대부분 함께 생성하고 함께 제거한다. 애그리거트는 경계를 갖는다. 한 애그리거트에 속한 객체는 다른 애그리거트에 속하지 않는다. 애그리거트는 독립된 객체 군이며 각 애그리거트는 자기 자신을 관리할 뿐 다른 애그리거트를 관리하지 않는다. 예를 들어 주문 애그리거트는 배송지를 변경하거나 주문 상품 개수를 변경하는 등 자기 자신은 관리하..
· 독후감
챕터 02를 읽으면서 내가 생각하기에 중요한 문장들을 정리하겠다. 객체지향 객체지향은 객체를 지향하는 것이다. 두 가지를 머릿속에 넣어두자. 1. 어떤 클래스가 필요한지를 고민하기 전에 어떤 객체들이 필요한지 고민하자. 2. 객체를 독립적인 존재가 아니라 기능을 구현하기 위해 협력하는 공동체의 일원으로 봐야 한다. 클래스의 내부와 외부 클래스의 내부와 외부를 구분해야 하는 이유는 무엇일까? 그 이유는 경계의 명확성이 객체의 자율성을 보장하기 때문이다. 그리고 더 중요한 이유는 프로그래머에게 구현의 자유를 제공하기 때문이다. 객체지향의 장점 객체지향의 장점은 객체를 이용해 도메인의 의미를 풍부하게 표현할 수 있다는 것이다. 따라서 의미를 좀 더 명시적이고 분명하게 표현할 수 있다면 객체를 사용해 해당 개념..
· 독후감
도메인 영역의 주요 구성 요소 앞선 글에서 도메인 영역은 도메인의 핵심 모델을 구현한다고 하였다. 도메인 영역의 모델은 도메인의 주요 개념을 표현하며 핵심 로직을 구현한다. 1장에서 나왔던 엔티티와 밸류 타입은 도메인 영역의 주요 구성 요소이다. 이 두 요소와 함께 도메인 영역을 구성하는 요소를 아래의 표와 함께 살펴보자. 요소 설명 엔티티 ENTITY 고유의 식별자를 갖는 객체로 자신의 라이프 사이클을 갖는다. 주문, 회원, 상품과 같이 도메인의 고유한 개념을 표현한다. 도메인 모델의 데이터를 포함하며 해당 데이터와 관련된 기능을 함께 제공한다. 밸류 VALUE 고유의 식별자를 갖지 않는 객체로 주로 개념적으로 하나인 값을 표현할 때 사용된다. 배송지 주소를 표현하기 위한 주소나 구매 금액을 위한 금액..
· 독후감
이 글은 챕터 02 (아키텍처 개요)를 중점으로 다룰 예정이며, 스프링부트와 관련되어 추가 설명을 할 것이다. 네 개의 영역 표현, 응용, 도메인, 인프라스트럭쳐는 아키텍처를 설계할 때 출현하는 전형적인 네 가지 영역이다. 스프링부트에서 네 가지 영역에 대한 예시는 이렇다. 표현 영역 - Controller 응용 영역 - Service 도메인 영역 - Entity 인프라스트럭쳐 영역 - Repository 말로 표현해보자면 표현 영역 - 사용자의 요청을 받는 위치 응용 영역 - 시스템이 사용자에게 제공해야 할 기능을 구현하는 위치 도메인 영역 - 도메인 모델을 구현 인프라스트럭쳐 영역 - 구현 기술에 대한 것을 다룸 (ex. RDBMS 연동처리) 도메인, 응용, 표현 영역은 구현 기술을 사용한 코드를 직..
· 독후감
들어가기 앞서 로버트 마틴의 소프트웨어 모듈이 가져야하는 세 가지 기능에 관한 설명을 적고 시작하겠다. 모든 소프트웨어 모듈에는 세 가지 목적이 있다. 첫 번째 목적은 실행 중에 제대로 동작하는 것이다. 이것은 모듈의 존재 이유라고 할 수 있다. 두 번째 목적은 변경을 위해 존재하는 것이다. 대부분의 모듈은 생명주기 동안 변경되기 때문에 간단한 작업만으로도 변경이 가능해야 한다. 변경하기 어려운 모듈은 제대로 동작하더라도 개선해야 한다. 모듈의 세 번째 목적은 코드를 읽는 사람과 의사소통하는 것이다. 모듈은 특별한 훈련 없이도 개발자가 쉽게 읽고 이해할 수 있어야 한다. 읽는 사람과 의소소통할 수 없는 모듈은 개선해야 한다. 정리해보자면 모든 모듈은 제대로 실행돼야 한다. 모든 모듈은 변경이 용이해야 한..
· 독후감
객체지향이란 무엇인가? 배워야 할게 산더미인 나에게 대답하기 너무 어려운 질문이다. 지금 글을 쓰고 있는 이 순간에도 객체지향이란 무엇일까 생각하며 멍 때리는 중이다. 그나마 이 책을 한번 읽고나서 배운 거에 대해 적어보고자 한다. 잘 모르겠는 질문에 대한 답변대신 일단 객체지향이라고 하면 떠오르는 키워드를 나열해 보자 캡슐화, 다형성, 클래스, 상속, 추상화,,,, 학부 객체지향 수업 때 지겹도록 들은 말이다. 그리고 항상 따라오는 설명을 적어보겠다. 붕어빵틀은 클래스이며 붕어빵은 객체(인스턴스)이다. 사과, 바나나, 메론은 '과일'로 추상화할 수 있다. 또는 '객체지향이란 현실세계의 모방이다'도 심심찮게 볼 수 있다. 서론이 길어지는 거 같으니 하고 싶은 말부터 하겠다. 객체지향은 현실세계의 모방이 ..
Choony
'독후감' 카테고리의 글 목록