nextstep

    ATDD를 접하게 된 과정

    많은 곳에서 TDD(테스트 주도 개발)를 하고 있으며 관련 도구가 많이 보인다. 좀 더 테스트 주도 개발을 알고 싶어서 최근에 관련 서적을 읽었다. 위의 두 서적은 제목처럼 TDD 내용이 다뤄진다. 그러나 두 서적 모두 핵심 내용은 TDD를 한 단계 더 확장시킨 ATDD가 중심이다. 생소한 ATDD를 접했지만, TDD와 흡사해서 금방 익숙해질거라 생각했다. 하지만 오래된 서적이라 예제 코드가 이해하기 힘들었거나, 코드없이 설명하니 ATDD를 제대로 이해하기 힘들었다. 좀 더 알고 싶어서 NEXTSTEP에서 진행하는 실습 위주의 교육과정을 수강했다. ATDD와 함께 클린 API로 가는 길 edu.nextstep.camp 서적만으로 이해하기 부족했던 부분을 실습 교육을 통해서 보완을 했다. 이제서야 배운 A..

    바운디드 컨텍스트(BOUNDED CONTEXT)

    시작하면서 우리는 하나의 단어를 여러 의미로 사용하는 상황을 많이 마주했으며, 앞으로도 계속 사용될 예정이다. 비즈니스에서 Account라는 단어를 보면 은행에서는 계좌로 보지만, ERP 시스템에서는 계정으로 사용된다. 이렇듯 글자는 같지만 의미가 다른 걸 동음이의어라 부른다. 개발적인 측면에서 애플리케이션의 전체적인 구조를 보면 다양한 도메인에서 같은 용어가 많이 발생하는 걸 볼 수 있다. 용어의 중복이 많다보니 하나의 모델로 처리하려는 시도가 생길 수 있다. 하나의 모델이 다양한 도메인에서 사용된다면 Common이라는 공통모듈에 집어넣고 팀 내에서 이를 사용하라고 통보할지도 모른다. 과연 올바른 방법일까? 아니다, 상품이라도 고객이 바라보는 상품과 주문에서의 상품은 서로 다르다. (서로 관리되는 상태..

    유비쿼터스 언어(UBIQUITOUS LANGUAGE)

    프로젝트를 진행하다보면 다음과 같은 상황을 겪어볼 수 있다. 첫번째 - 회원 관련 사용자A : 신규 회원을 등록하겠습니다. 사용자B : 신규 회원을 추가하겠습니다. 사용자가 말하는 등록과 추가는 무슨 의미일까? 모두 신규 회원이 가입되었다는 의미로 사용하는 걸까? 두번째 - 상품 관련 MD1 : 노트북 상품을 추가하겠습니다. MD2 : 노트북 제품을 등록하겠습니다. 사용자가 말하는 상품과 제품은 같은 의미로 사용하는 걸까? 추가와 등록은 이전 회원에 비해 헷갈린다. 단순히 수량을 추가하는 걸까? 새롭게 상품&제품을 등록한다는 걸까? 이렇듯 같은 팀내에서 도메인에 대한 용어가 제각각인 경우를 겪어본 적이 있을 거다. (혹은 용어가 같지만 다른 의미로 사용된 경우) 이런 차이로 같은 도메인을 서로 다르게 바..

    9월 회고록 및 10월 목표

    9월 한 달 동안 무엇을 했는가? 지난 회고를 통해 9월의 목표를 크게 2개로 잡았지만 9월 초에 우테캠프로 3기 모집이라는 메인 목표가 추가되었다. 그리고 진행중인 스터디가 있다. - DDD 세레나데, 매주 화요일 19시 30분 - 사이드 프로젝트, 매일 틈틈이 진행 중. - 우테캠프로 3기, 9월 15일~9월 29일까지 지원받음 - 오브젝트 스터디, 2달 넘게 진행된 스터디 마무리 - 블랙커피 블로그 스터디, 매주 월요일 22시 - 객체지향 스터디, 매주 토요일 20시 - 우아한유스방 스터디, 과제 형식과 피드백 하나씩 풀어보자. 많은 걸 알려준 DDD 세레나데 (매주 화요일 19시 30분) DDD(Domain-Driven Design) 세레나데 edu.nextstep.camp DDD 세레나데를 통해..

    TDD, Clean Code with Java - 미션4, 볼링(🎳) 후기

    클린코드를 위한 TDD, 리팩토링 with Java edu.nextstep.camp 학습 목표 더보기 경험해야할 학습 목표 Q&A 서비스를 활용해 레거시 코드를 리팩토링하는 경험 지금까지 학습한 내용을 기반으로 TDD, 클린코드, 객체지향 프로그래밍하는 경험 객체지향 생활 체조 원칙 규칙 1: 한 메서드에 오직 한 단계의 들여쓰기만 한다. 규칙 2: else 예약어를 쓰지 않는다. 규칙 3: 모든 원시값과 문자열을 포장한다. 규칙 4: 한 줄에 점을 하나만 찍는다. 규칙 5: 줄여쓰지 않는다(축약 금지). 규칙 6: 모든 엔티티를 작게 유지한다. 규칙 7: 3개 이상의 인스턴스 변수를 가진 클래스를 쓰지 않는다. 규칙 8: 일급 콜렉션을 쓴다. 규칙 9: 게터/세터/프로퍼티를 쓰지 않는다. GRASP G..

    📖4월 목표 및 3월 회고📖 (부제 : TDD, Clean Code With Java)

    4월이 시작된지 열흘이 지나서 작성한다🙈 3월 목표 작성 이후 많은 변화가 있었다.👍 3월 회고 📖 변화의 요인 TDD, Clean Code With Java 11기 교육 📖 클린코드를 위한 TDD, 리팩토링 with Java edu.nextstep.camp 과정은 막 수료했지만 아직 진행중(03.01 ~ 05.04)이며, 처음부터 반복진행하면서 얻게 될 인사이트가 많이 남아있다. 그리고 이전까지 내가 한 공부가 잘못된 방식이란 걸 일깨워 준 고마운 교육 이다. 교육 후기 TDD, Clean Codw with Java - 미션1, 자동차 경주 후기 TDD, Clean Codw with Java - 미션2, 로또 후기 TDD, Clean Codw with Java - 미션3, 사다리 후기 TDD, Clea..

    TDD, Clean Code with Java - 미션3, 사다리 후기

    클린코드를 위한 TDD, 리팩토링 with Java edu.nextstep.camp 경험해야할 학습 목표 자바8의 스트림, 람다를 사용해 함수형 프로그래밍하는 경험 In -> Out, Out -> In 방식으로 도메인 객체를 설계하는 경험 책임주도설계 기반으로 인터페이스 활용해 프로그래밍하는 연습 경험할 객체지향 생활 체조 원칙 규칙 4: 한 줄에 점을 하나만 찍는다. Clean Code 가이드의 디미터 법칙을 지키는 것을 의미한다. 규칙 6: 모든 엔티티를 작게 유지한다. 규칙 7: 3개 이상의 인스턴스 변수를 가진 클래스를 쓰지 않는다. 규칙 9: 게터/세터/프로퍼티를 쓰지 않는다. 미션3, 사다리타기 후기다. 자동차경주, 로또에서 많은 걸 배운 덕분에 이번 사다리타기는 예상보다 빨리 진행되었다 st..

    TDD, Clean Code with Java - 미션2, 로또 후기

    클린코드를 위한 TDD, 리팩토링 with Java edu.nextstep.camp 경험해야할 학습 목표 TDD 기반으로 프로그래밍하는 경험 메소드 분리 + 클래스를 분리하는 리팩토링 경험 점진적으로 리팩토링하는 경험 경험할 객체지향 생활 체조 원칙 규칙 1: 한 메서드에 오직 한 단계의 들여쓰기만 한다. 규칙 2: else 예약어를 쓰지 않는다. 규칙 3: 모든 원시값과 문자열을 포장한다. 규칙 5: 줄여쓰지 않는다(축약 금지). 규칙 8: 일급 콜렉션을 쓴다. 로또 미션을 끝내고 작성하는 후기다. 자동차 경주보다는 더 어려웠으며 많은 지적을 받았다. step1, 문자열 덧셈 계산기 이전 자동차 경주 때 했던 문자열 계산기와 비슷하다. , 콤마로 문자열을 나누는것과 동일하다. 다른 점은 사용자가 커스텀..