반응형 우아한테크코스/공부14 람다보다는 메서드 참조를 사용하라 람다보다는 메서드 참조를 사용하라 람다는 익명 클래스보다 간결하다. 간결한 람다를 더 간결하게 만드는 방법이 메서드 참조이다. 메서드 참조를 써야하는 경우 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. 이전 1 2 다음 반응형