스터디/이펙티브코틀린

아이템 1 - 가변성을 제한하라

어떠한 요소가 상태를 갖는 경우, 요소의 동작은 사용 방법뿐만 아니라 그 이력에도 의존하게된다. 상태를 갖게 하는 것은 양날의 검이다. 변하는 요소를 표현할 수 있다는 것은 유용하지만, 상태를 적절하게 관리하기 어렵기 때문이다. 이해하고 디버그하기 힘들어진다. 코드의 실행을 추론하기 어려워진다. 멀티스레드 프로그램일 때 동기화가 필요하다. 테스트하기 어렵다. 변경을 다른 부분에 알려야 하는 경우 불편하다. set, map의 key로 사용할 수 없다. hash 값이 변경되면 요소를 버킷에서 찾지 못할 수 있다. 코틀린에서 가변성 제한하기 코틀린은 가변성을 제한할 수 있게 설계되어 있습니다. val → 읽기전용 프로퍼티 가변(mutable) 컬렉션, 읽기전용(immutable) 컬렉션의 구분 데이터 클래스의..

2022.02.25 게시됨

스터디/이펙티브자바

[아이템1] 생성자 대신 정적 팩터리 메서드를 고려하라

이펙티브 자바 2장 객체 생성과 파괴 [아이템1] 생성자 대신 정적 팩터리 메서드를 고려하라 첫번째 장점, 이름을 가질 수 있다. Example code. public class Ladder { public static Ladder left() { return new Ladder(Direction.LEFT); } public static Ladder right() { return new Ladder(Direction.RIGHT); } public static Ladder down() { return new Ladder(Direction.DOWN); } private Direction direction; public Ladder(Direction direction) { this.direction = dir..

2020.01.15 게시됨