본문 바로가기
728x90

Programming/Clean Code4

[ATDD] ATDD와 함께 클린 API로 가는 길 3기 - 1주차 ATDD TDD는 왜 어려운가 실무에 적용하기에는 일정 수준의 숙련도가 필요 테스트 툴에 익숙하지 않다 보니 어느 순간부터 테스트를 작성하는 공수가 더 들때가 있다 그러다 보니 TDD 흐름을 관리하기가 힘들다 레거시 테스트를 지속적으로 관리를 해줘야 하는데 어느 순간부터 손댈 수 없게 되어버린다 테스트의 목적에 포커스를 두기보다는 학문적 목표라는 느낌이 강하다 도메인부터 단위테스트를 통해 기능을 구현하려 한다 도메인 로직을 모르는 상태에서 시작하면 막막해져버린다 도메인 관계 설계가 어려워서 지우고 생성하다보면 어느순간부터는 잊어버리게 된다 막상 기능 통합을 하면 삐그덕 거린다 서비스가 국한된 부분을 강조하다 보니 전체를 놓치게된다 ATDD 인수테스트를 먼저 구현하고 단위테스트를 구현한다! 인수테스트 기반.. 2021. 3. 7.
정적 팩토리 메서드 static으로 선언한 객체를 생성하는 메소드 장점 가독성이 높다 객체를 캐싱할 수 있다 하위 자료형 객체를 반환할 수 있다 단점 정적 팩토리 메서드만 있는 클래스는 하위 클래스를 못만든다 일반 정적 메소드와 구분하기 힘들다 1. 가독성이 높다 이름으로 인스턴스의 목적을 알 수 있다 class Person { String name; int age; public Person(String name, int age) { this.name = name; this.age = age; } // 정적 팩토리 메소드 public static Person adult() { return new Person("성인", 40); } // 정적 팩토리 메소드 public static Person kid() { return ne.. 2021. 3. 6.
[ATDD] ATDD와 함께 클린 API로 가는 길 3기 - 오리엔테이션 TDD 사이클에서 무엇을 테스트 해야하는가에 대한 고민을 해결해줄 수 있다 인수테스트 먼저 작성하고 단위테스트 생성 인수테스트가 종료되면 단위테스트도 종료 인수테스트는 요구사항 기반으로 작성되는 것이므로 목적이 분명해진다 어떻게 학습할 것인가? TDD를 인수테스트와 함께 적용 어떻게 작성하고 어떻게 관리할지 고민 TDD를 위한 테스트 도구도 학습 도구 활용법이 익숙하지 않아서 어려움도 있다 인수테스트 사이클 학습 테스트 리펙토링 유지보수 못하게 작성하면 말짱 도루묵 어떻게 유지보수할것인가? 사실 테스트 작성해놓고 많이 잊혀질 때가 많다 테스트를 길고 복잡하게 작성하지 않는다 가독성이 적으면 꼴도 보기 싫다 REST의 제약조건 분산웹 환경에서 어떻게 효율적인 아키텍쳐를 만들 것인가 라는 고민에서 나옴 각 .. 2021. 3. 4.
불변 객체는 어떻게 만들까 클린코드 8기 과정을 들으면서 많은 분들의 코드로 부터 많은 부분을 배울 수 있었습니다. 그중에서 제 눈에 가장 많이 보였던 것이 바로 불변객체였습니다. 사실 스프링부트의 개발에 익숙하다 보니 Entity와 Dto를 생각없이 만들고 있다는 생각이 많이 들었습니다. 앞으로의 미션도 많이 남았기에 한번 정리해보도록 하겠습니다. TDD를 배우고 있는 입장에서 불변객체를 생성하는 과정을 TDD로 살펴보도록 하겠습니다. 불변객체란? 불변 객체는 객체가 가지고 있는 값(state)이 변하지 않는 객체입니다. public class Person { private String name; public Person(String name) { this.name = name; } } Person 나은이 = new Person.. 2020. 6. 10.
728x90