스터디/이펙티브코틀린

아이템 7 - 결과 부족이 발생할 경우 null과 Failure를 사용하라

다른 시스템에서 데이터를 인터넷 연결등의 이유로 받아오지 못하는 경우 조건에 맞는 요소를 찾지 못하는 경우 파싱을 시도했으나 형식이 맞지않아 실패하는 경우 위와 같이 함수가 원하는 결과를 만들어 내지 못할 때 예외를 정보를 전달하는 방법으로 사용해서는 안된다. 다음과 같은 방식을 고려하자. 충분히 예측할 수 있는 범위의 오류 null, 실패를 나타내는 sealed 클래스를 반환한다. null을 반환하는 경우: 추가적인 정보를 전달하지 않아도 되는 경우 sealed 클래스를 반환하는 경우: 추가적인 정보를 전달해야 하는 경우 예측하기 어려운 경우 예외를 throw 한다. 예외를 정보를 전달하는 방법으로 사용하면 다음과 같은 문제가 발생하기 때문이다. 개발자가 exception이 전파되는 과정을 제대로 추적..

2022.03.02 게시됨

스터디/이펙티브자바

[아이템7] 다 쓴 객체 참조를 해제하라

아이템 7 다 쓴 객체 참조를 해제하라 메모리 누수의 주범이다. 사용을 마친 객체의 참조를 해제할 때 null을 이용하여 객체 참조를 해제하는 방법도 있지만, 이는 지양하도록 하라. 가장 이상적인 방법은 참조를 담은 변수를 유효 범위 밖으로 밀어내는 것이다. 캐시 또한 메모리 누수를 일으키는 주범이니, 캐시 외부에서 키를 참조하는 동안만 엔트리가 살아 있는 캐시가 필요하다면 WeakHashMap을 사용해 캐시를 만들도록 하자. @DisplayName("HashMap 테스트") @Test void test1() { //given Map map = new HashMap(); Foo key = new Foo(); map.put(key, "1"); //when key = null; System.gc(); //t..

2020.01.28 게시됨