Git repository https://github.com/howudong/java-christmas-6-howudong 4주 차 후기 4주 차는 지금까지 했던 어떤 미션과는 요구사항이 복잡했다. 그리고 요구사항을 과제식으로 설명한 것이 아니라, 클라이언트가 기능을 요청하는 방식을 사용했다. 그러다 보니 뭔가 미션을 위한 문제라기보다는 실제 서비스 개발이라는 느낌이 강했다. 이번에는 내가 실무자라는 느낌으로 미션에 임했다. 클라이언트에게 프로그램을 전달하고, 협업을 위해 할 수 있는 설계를 하기 위해 노력했다. 또한 기능이 실제로 확장될 수 있고 프로그램이 유지보수가 된다는 점을 생각했다. 도메인 설계 다이어그램 이번 주차의 핵심이라고 할 수 있는 도메인의 다이어그램이다. 값 객체(Value Objec..
repository https://github.com/howudong/java-lotto-6/tree/howudong 3주 차 소감 요구사항이 복잡해지기 시작한 것 같다. 확실히 1~2주 차는 맛보기였다.. 이번 주차에는 입력과 출력에 필요한 도메인 정보들이 다르다. 그래서 처음으로 DTO를 적용시켜 봤다. DTO라는 개념 자체는 간단하지만 이를 직접 사용한다는 것은 간단하지 않았다. 'DTO로 어디서 바꿔줘야 하는가?', '이를 효율적으로 사용하기 위해선 어떻게 해야 하는가?' 이런 것들을 고려하는 데에 개인의 주관이 많이 들어갔다. DTO로 변환시켜 주기 위한 service 계층을 사용하다 보니, 자연스럽게 프로그램 규모가 커지고 복잡해지기 시작했다. 이럴 때일수록 중요한 것이 객체지향적인 설계라고 ..
https://github.com/woowacourse-precourse/java-racingcar-6/pull/149 2주 차를 마치고 느낀 점 구현 난이도는 1주 차보다 높진 않았던 것 같다. 오히려 1주 차보다 낮은 느낌을 받았다. 그런데 객체지향적 설계 같은 여러 가지 조건을 고려하다 보면, 이 미션 생각보다 까다롭다. TDD를 처음으로 적용해 봤는데, 확실히 좋더라. 클래스의 역할 분리가 명확하게 되고, 더욱 견고하게 만들어지는 느낌이다. 무엇보다도 오류가 훨씬 적어져서, 오류 색출에 걸리는 시간이 대폭 줄어들었다. 순조롭게 진행을 하다가, 마지막 날에 큰 리팩토링을 해버리는 바람에 애를 먹었다. 코드를 고치는 건 괜찮은데, 테스트 코드를 옮기고 하는 게 진짜 괴롭더라... 오히려 괴로워하다 보..
Java에서 Map을 사용하다 보면 로직을 처리하는데 함수 호출이 잦아지는 경우가 많아 코드를 한눈에 알아보기가 힘들다. 그래서 Map interface 중 Map 사용을 간결하게 하도록 돕는 함수에 대해 알아봤다. 이번 포스팅에서 소개할 메서드는 compute() computeIfAbsent() vs putIfAbsent() computeIfPresent() 이다. 소개도 나와있는 순서대로 하겠다. compute 동작 compute(K key, BiFunction
Repository 주소 https://github.com/howudong/java-baseball-6/tree/howudong GitHub - howudong/java-baseball-6 Contribute to howudong/java-baseball-6 development by creating an account on GitHub. github.com 다이어그램 domain 다이어그램 설계 domain과 view의 연관관계 다이어그램 domain과 view과 서로 연관관계없이 잘 만들어진 모습을 확인할 수 있다. 컨트롤러만 빼고 보면 서로 모르게 잘 만들진 것 같은데.. 컨트롤러를 포함해서 생각해야 하나? 컨트롤러를 포함하면 그림이 좀 복잡해져서 연관관계를 파악하기 어려워진다. 일단 내가 할 수 ..
함수형 인터페이스를 알면 편한 이유 우리가 보통 코딩을 할 때, Visual Studio Code, Intellij 등 IDE 환경에서 진행한다. IDE를 사용하면 엄청나게 편리하다. 내가 여기서 말하고자 하는 것은, IDE가 클래스의 함수 이름과 기능을 제공해 주는 것에 대한 것이다. 컬렉션이 어떤 함수를 가지고 있는지를 알 수 있고, 어떤 기능을 하는지 알 수 있다. 위는 인텔리제이에서 arrayList 컬렉션에서 사용할 수 있는 함수를 IDE에서 창으로 알려주는 모습이다. 빨간 줄 부분이 전부 함수형 인터페이스 부분이다. 사실 함수형 인터페이스는 생소하지만 항상 우리 옆에 있었다. 함수형 인터페이스를 모른다면, IDE에서 해당 함수의 사용법을 알려줬는데도 사용하지 못하는 것이다. 예를 들어서 str..