스터디/이펙티브코틀린

아이템 5 - 예외를 활용해 코드에 제한을 걸어라

require : 아규먼트를 제한한다. check : 상태와 관련된 동작을 제한한다. assert : 어떤것이 true인지 확인한다. test 모드에서만 작동한다. return, throw와 함께 활용하는 엘비스(Elvis) 연산자 위 블럭을 이용하면 다양한 장점을 갖게 된다. require과 check 블럭을 통해 문서를 통하지 않고도 어느정도 요구사항을 파악할 수 있고 예상치 못한동작을 방어할 수 있게된다. 그리고 스마트 캐스트 기능을 활용할 수 있게 되면서 타입 변환을 적게 할 수 있다. 아래는 스터디를 하면서 구성원들과 이야기한 내용을 정리한 것이다. require 매개변수로 받은 값이 유효한지 검사하는 용도로 사용하는것이 올바른 것 같다. 예를들어 전달받은 Long이 양수여야만 하는지 검사를 하..

2022.03.01 게시됨

스터디/이펙티브자바

[아이템5] 자원을 직접 명시하지 말고 의존 객체 주입을 사용하라

아이템 5 자원을 직접 명시하지 말고 의존 객체 주입을 사용하라 사용하는 자원에 따라 동작이 달라지는 클래스에는 정적 유틸리티 클래스나 싱글턴 방식이 적합하지 않다. ... 이 조건을 만족하는 간단한 패턴이 있으니, 인스턴스를 생성할 때 생성자에 필요한 자원을 넘겨주는 방식이다. 직접 명시되어 고정되어 있는 변수는 테스트를 하기 힘들게 만든다. 즉, 의존성을 바깥으로 분리하여 외부로 부터 주입받도록 작성하여야 한다. (의존 객체 주입 패턴) Example code public class PriceCalculateService { private static final String EXCHANGE_URL = "https://somewhere.com"; private static final double FIX..

2020.01.18 게시됨