반응형 우아한테크코스35 람다보다는 메서드 참조를 사용하라 람다보다는 메서드 참조를 사용하라 람다는 익명 클래스보다 간결하다. 간결한 람다를 더 간결하게 만드는 방법이 메서드 참조이다. 메서드 참조를 써야하는 경우 1. 대부분의 경우 2. 람다로 구현했을 때 너무 길거나 복잡한 경우 3. 기능을 잘 드러내는 이름을 사용하고 싶을 때 lottoNumbers.stream() .map(lottoNumber -> new LottoTicket(lottoNumber)) .collect(Collectors.toList()) 위와 같은 코드를 메서드 참조로 바꾸면 다음과 같다. lottoNumbers.stream() .map(LottoTicket::new) .collect(Collectors.toList()) 위와 같이 메서드 참조를 사용하면 똑같은 결과를 더 보기 좋게 얻을.. 2022. 3. 7. equals는 일반 규약을 지켜 재정의하라 equals를 재정의할 때 곳곳에 함정이 존재하므로 주의해야 한다. 다음과 같은 상황들에서는 equals를 재정의하지 않아야 한다. equals를 재정의하지 않는 것은 인스턴스는 오직 자기 자신과만 같다는 것이다. 재정의 하지 말아야 할 때 1. 각 인스턴스가 본질적으로 고유할 때 값을 표현하는 게 아니라 동작하는 개체를 표현하는 클래스에서는 재정의를 하지 않는다. 예를 들어 controller, view 등등 이미 Object에 equals 메서드가 잘 구현되어있다. // Object의 equals 메소드 public boolean equals(Object obj) { return (this == obj); }2. 인스턴스의 '논리적 동치성'을 검사할 일이 없다. 3. 상위 클래스에서 재.. 2022. 3. 2. 값 객체(VO) 자동차 경주 미션 중 다른 크루들이 값 객체를 사용하여 구현하는 것을 보았다. 값 객체를 알고 있었지만 사용하지 못한 부분에 대해 반성을 하면서 작성하는 반성문 도메인 주도 설계 철저 입문 책을 보고 정리하는 글입니다. 값 객체란? 시스템 특유의 값을 표현하기 위해 정의하는 객체 값의 성질 1. 변하지 않는다. 2. 주고받을 수 있다. 3. 등가성을 비교할 수 있다. 값 객체는 값의 성질을 가지고 있다. 1. 값은 변하지 않는다. 값은 변화하지 않는다. 우리가 값을 수정할 때는 새로운 값을 대입한다. 예를 들면, String greet = "하이" greet = "안녕" greet의 값이 처음에는 "하이" 였지만 "안녕"으로 수정되었다. 그렇지만 이것을 값이 변화했다고 보지 않는다. 값은 "하이", "안.. 2022. 2. 20. [자동차 경주 미션] 전략 패턴 사용 후기 자동차 경주 미션 과정 진행 중에 전략 패턴을 사용해보고 작성하는 글 Car 객체가 조건을 만족할 시 움직이는 기능을 구현하기 위해서 레벨 1단계에서는 다음과 같이 구현을 하였다. public void move(int number) { if (number >= MOVING_CONDITION_NUMBER) { position += 1; } } 이 메서드에 대한 테스트는 다음과 같다. @Test public void 전진_여부() { Car testCar = new Car("아스피", 2); testCar.move(4); assertThat(testCar.isSamePosition(new Car("배카라", 3))).isEqualTo(true); } 위와 같이 move라는 메서드에 직접 값을 삽입하여 전진 .. 2022. 2. 18. [자동차 경주 미션] 피드백 반영 1. Car 생성자 수정 1차 완성한 코드에는 다음과 같이 Car 클래스에 2개의 생성자를 작성하였다. position을 초기화하는 생성자는 프로덕션 코드에서는 사실 필요없었지만 테스트를 위해서 추가한 코드였다. 그래서 위와 같은 피드백을 받게 되었다. 테스트만을 위한 코드를 프로덕션 코드에 만드는 것이 괜찮을까? 라는 의구심이 있었는데 닉께서 피드백으로 확실하게 정리해주었다. 기존에는 필드 변수 position을 미리 0으로 선언할 때 초기화하였지만 추천해주신 방법으로 다음과 같이 생성자를 만들어 두 생성자를 모두 의미있게 사용할 수 있었다. 이 방법을 알고는 있었지만 생각해내지 못한 방법이라 더 깊이 생각하지 못한 점에 대해 반성을 하였다. 아직 노오력이 부족하다. 이 방법을 통해 position을 .. 2022. 2. 13. 페어 프로그래밍 오늘 페어 프로그래밍을 통해 자동차 경주 게임 미션을 완료하였다. 프리코스와는 다르게 단위 테스트를 제작하여 미션을 수행해야 했다. 페어와 나, 둘 다 단위 테스트에 대해 무지해서 쉽지 않았다. 이는 앞으로 더 공부를 해 볼 예정이다. 페어 프로그래밍을 진행해보고 느낀 점 새로운 사람과 가까워지는 것이 제일 큰 장점이다. 페어 프로그래밍을 하면서 막히는 부분들과 의견 차이를 해결하면서 페어에게 조금씩 의지하게 되었다. 그래서 내적 친밀도가 조금 올라간 것 같은 느낌이 든다. 그런데 비대면이기 때문에 줌 안에서는 어색함이 많이 사라졌지만, 막상 현실에서 만나면 아,,아안녕하세요,, 내 의견이 옳다 라는 생각을 많이 굽히게 되었다. 페어 프로그래밍을 하면서 내 의견이 옳다 라는 생각을 많이 한다는 것을 깨달.. 2022. 2. 11. 우테코 3주차 후기 프리코스는 저의 모습을 좋은 방향으로 성장시켜 주었습니다. 제일 먼저 개발 실력을 성장시켜주었습니다. 이전까지의 개발 방식은 이기적이었습니다. 단순히 컴파일에 성공하는 코드를 작성해왔습니다. 코드 컨벤션, 매주 받는 피드백 그리고 스스로 찾아 읽어본 책들을 통해 개발 방식에 변화를 줄 수 있었습니다. 타인이 쉽게 알아볼 수 있도록 작성하는 것에 집중하였고 이것이 습관이 되도록 만들었습니다. 그리고 개발자로서 성장시켜주었습니다. 매주 과제를 진행하면서 충분하다고 생각이 들 때까지 리팩터링을 진행했습니다. 그렇지만 항상 다음 과제를 진행할 때 이전 과제에서 발견하지 못한 문제점들을 확인할 수 있었습니다. 이 경험을 통해 프리코스가 아니어도 개발자로 사는 것은 계속해서 문제점을 발견해내는 이러한 과정의 연속일.. 2021. 12. 13. 우아한테크코스 4기 프리코스 후기 프리코스 3개의 과제를 끝내고 느낀 점 작성하기 원래는 1개의 과제를 끝낼 때마다 느낀 점을 작성하려고 하였다. 그런데 과제를 진행하다 보니 느낀 점을 작성할 시간에 과제 해결에 필요한 내용을 공부해야겠다는 생각이 들었다. 그래서 모든 과제를 다 끝낸 지금, 이제라도 느낀 점을 작성해보려고 한다. 프리코스 시작 전 일단 우테코 1차에 합격하고 프리코스 시작까지 5일이라는 시간이 있었다. 이 5일 동안 뭘 하면 좋을까 생각을 하면서 이전 기수 사람들의 블로그를 염탐하였다. 여러 블로그들에서 클린 코드, 람다와 스트림에 대한 중요성을 강조하였고, 그런 글들을 보자마자 바로 클린 코드와, 모던 자바 인 액션 두 책을 구매하였다. 5일밖에 없는 시간 동안 이 두 책을 읽는 것이 크게 도움이 될까?라는 생각을 하.. 2021. 12. 13. 이전 1 2 3 4 다음 반응형