객체 설계 (클래스 분리) 메서드 분리만 잘해도 클린코드를 어느정도 만들 수 있다. 특히, 함수를 한가지 일만 하도록 분리하는걸 최우선으로 하는게 좋다! 이게 익숙해진다면 그 다음으로 클래스 분리로 넘어간다. 근데 클래스 분리( = 객체설계)가 메서드 분리보다 훨씬 어렵다. 객체 설계와 관련한 조언들 객체의 역할, 책임, 협력을 고려하면서 객체 설계 역할, 책임, 협력이란 무엇인가? 객체 설계 5원칙 SOLID를 지키면서 객체 설계 유지보수 하기 좋도록 객체 설계 "응집도는 높이고, 결합도는 낮춘다!" 원칙으로 객체 설계 이런 여러가지 조언들이 있지만 실제 현장에서 해당 원칙을 기반으로 객체 설계하기란 쉽지 않다. (물론 깊이 있게 고민하고 의식한다면 조금씩 나을 수 있지만, 조금이라도 의식하지 못한다면..
기능 요구사항 각 자동차에 이름을 부여할 수 있다. 자동차 이름은 5자를 초과할 수 없다. 전진하는 자동차를 출력할 때 자동차 이름을 같이 출력한다. 자동차 이름은 쉼표(,)를 기준으로 구분한다. 자동차 경주 게임을 완료한 후 누가 우승했는지를 알려준다. 우승자는 한명 이상일 수 있다. 단위 테스트, TDD를 시작할 때의 감정 상태 TDD → 어디서, 어떻게 시작해야할 지 모르겠고, 막막하고 어렵다. 자동차 경주게임, 앞으로 진행할 로또, 사다리타기 미션들은 실무와 비슷하다. 물론 실무보다는 요구사항이 명확한 상태에서 TDD를 진행할 수 있는데, 실무로 가면 요구사항이 명확하지 않은데, TDD로 개발해야할 상황이 오게 된다. 객체 설계도 해야하고.. 어렵다. 막막하다.. 구현후 자동화된 테스트를 만드는건..
이번에 nextstep에서 열리는 TDD, CleanCode Java 14기에 참여하게 되었다. 좋은 교육기관에서 제대로 미션을 수행하며 TDD와 클린코드, 리팩토링을 찐하게 맛보고 성장하고 싶다..! TDD에 집착하는 이유 TDD(Test Driven Development, 테스트 주도 개발) → Kent Beck(켄트 백) TDD란 프로그래밍 의사결정과 피드백 사이의 간극을 의식하고 이를 제어하는 기술이다. 웹 어플리케이션을 기준으로 피드백을 받는 과정을 생각해보면 UI부터 데이터베이스 테이블까지 만들고 CRUD까지 만들고 피드백을 받기까지 엄청 오랜 시간이 걸린다. 하지만 TDD는 엄청 빠른 시간내에 피드백을 받을 수 있다. TDD의 아이러니 중 하나는 테스트 기술이 아니라는 점이다. TDD는 분석..