TDD 클린코드 with Java 16 기 4주차 회고

Patrick YOO·2023년 5월 1일

TDD

목록 보기
5/8
post-thumbnail

GoodPoint

  • 자바 Lotto 기능에 대해 구현을 완료 하였고 현재 리뷰가 진행중에 있어 진척도가 안정권인다.
  • 여러 연산및 통계에 대한 작업이 기능이 작지만 신경써야 할 부분이 많았는데 시간은 좀 걸렸지만 깔끔하게 구현을 한것같다.

BadPoint

  • 알고리즘에서 살짝 약한 모습을 보이는거같다.
  • 저번주 보다 더 많은시간을 투자하지 못하였다.

What I learned and What were reviewed

  1. 배열보단 리스트를 활용하라.

Generic 은 불공변 을 유지한다.

Object[] objectArray = new Long[1];
objectArray[0] = "타입이 달라 넣을 수 없다.";

위와같은 코드에서 컴파일 에러가 발생하지 않는다. 위 코드가 실제로 실행되는 환경 Runtime 에 되서야 확인할 수 있는것이다.

List<Object> ol = new ArrayList<Long>(); // 호환되지 않는 타입이다.
Long 은 Object 의 하위타입이지만
List<Long> 은 List<Object> 의 하위타입이 아니다.

이와 같이 런타입 환경에서 타입 안정성을 보장할 수 있는 Collection List 의 사용이 권장된다.

Generic Type Erasure 에 대해 따로 학습해보도록 하자.

지네릭 변성 참고 자료

  1. 박싱된 기본 타입보다는 기본 타입을 사용하라.

기본 타입은 값만 가지고 있으나, 박싱된 기본 타입은 값에 더해 식별성(identity)이란 속성을 갖는다.
기본 타입의 값은 언제나 유효하나, 박싱된 기본 타입은 유효하지 않은 값, 즉 null을 가질 수 있다.
기본 타입이 박싱된 타입 보다 시간과 메모리 사용면에서 더 효율적이다.

박싱된 기본 타입보다는 기본타입을 사용하라. 참고자료

profile
자유인을 꿈꾸는 개발자

0개의 댓글