constructor input
title·viewCount·tags
원본 List를 그대로 보관하면 record 생성 뒤 외부 변경이 value의 hash와 내용까지 바꿉니다.
title·viewCount·tags
null·범위 거부
trim·표준 단위
List.copyOf(tags)
final components 저장
핵심: implicit field assignment 전에 정규화된 매개변수를 방어 복사하면 모든 생성 경로가 같은 불변식을 통과합니다.