전체 글

전체 글

    [NEXTSTEP] 세 번째, 네 번째 과제를 마무리 하면서 + 후기

    들어가며이번 글에서는 세 번째 미션인 로또 과제, 네 번째 미션인 수강신청을 구현하면서 배웠던 점에 대해 정리하고 후기를 작성하고자 합니다.Cyclic Dependency가 발생하지 않도록 하자1. Cylic Dependency란?Cyclic Dependency는 두 개 이상의 모듈 또는 클래스가 서로에게 의존할 때 발생합니다.의존성은 여러 수준에서 나타날 수 있으며 서로 다른 2개의 클래스가 서로의 import문을 추가했다면 Cyclic Dependency가 발생했다고 볼 수 있습니다.이러한 Cyclic Dependcy는 모놀리식에서 MSA로 분리할 때 애플리케이션 복잡도 증가로 인해 분리가 안 되는 어려움, 순환 참조 문제 등 많은 문제들을 야기합니다.2. Cyclic Dependency가 발생한 예..

    [NEXTSTEP] 두 번째 미션을 마무리 하면서

    들어가며 이번 글에서는 두 번째 미션인 로또 과제를 진행하면서 배웠던 점과 아쉬웠던 점에 대해서 정리하고자 합니다. 배운 점 인스턴스 필드가 3개일 때부터는 리팩터링 해라 연관성이 있는 새로운 클래스로 만드는 것을 고려하기 변수가 3개일 때부터는 별도의 도메인으로 분리해 볼 필요가 있는 객체일 수 있으니 클래스 분리를 고려해봐야 합니다. 정말 필요한 변수인지 고민하고 필요 없다면 제거하는 걸 고민해 볼 것을 추천합니다. 유효성 검사는 생성자에서 하자 개발자마다 유효성 검사를 하는 방법은 다양합니다. ValidatorUtils를 사용해서 구현을 하는 방법이라든가 아니라면 if문으로 유효성을 검사를 하는 방법이라든가.. 하지만 객체가 생성전에 객체가 생성될 수 있는 유효성 검사를 하는 것이 가장 좋은 방법일..

    [NEXTSTEP] 첫 번째 미션을 마무리 하면서

    들어가며 이번 글에서는 자동차 경주 과제를 진행하면서 배웠던점과 느낀 점들에 대해서 정리하고자 합니다. 배운 점 먼저 도메인을 설계하자 Inside-out 방식으로 구현하는 것이 중요합니다. 즉, 1:N 관계일 때 N인 객체를 먼저 테스트하는 것이 TDD 하기에 적합합니다. 테스트가 어려운 메서드는 구조 설계에서 제일 하단으로 옮기자 public class RandomNumberGenerator { private Random random; public RandomNumberGenerator() { this.random = new Random(); } public int generateRandomNumber(int min, int max) { return random.nextInt(max - min + 1..