[코틀린을 다루는 기술] 더 안전한 프로그램 - 참조투명

timothy jeong·2022년 4월 1일
0

코틀린

목록 보기
20/20

용어

참조 투명(referentially transparent)

이러한 부수 효과를 없애는 것 만으로도 프로그램을 충분히 안전하고 결정적으로 만들 수 있다. 프로그램을 충분히 안전하고 결정적으로 만들려면 외부 세계로부터 영향을 받아서도 안된다. 즉, 프로그램의 출력은 오로지 그 인자에 의해서만 영향을 받아야 한다. 이는 프로그램이 데이터를 콘솔, 파일, 원격 URL, 데이터베이스에서 읽을 수 없어야 하고 심지어 시스템의 데이터도 받을 수 없다는 것을 의미한다.

이러한 참조 투명한코드는 다음의 특징을 갖는다.
(1) 자기 완결적이다. 어떤 context 에서도 코드를 사용할 수 있다. 단지 올바른 인자가 전달되기만 하면 된다.
(2) 결정적이다. 같은 인자에 대해서는 항상 같은 결과를 반환한다. 잘못된 결과를 돌려줄 수는 있지만, 적어도 같은 인자에 대해서는 같은 결과가 보장된다.
(3) 절대 예외를 던지지 않는다. 물론 메모리 부족 오류나 스택 오버 플로우를 발생시킬 수는 있다. 하지만 이런 오류는 프로그램에 버그가 있음을 의미한다. 이러한 오류는 프로그래머나 API 사용자가 처리할 수 있는 오류가 아니다.
(4) 다른 코드가 실패하는 상황을 만들지 않는다. 참조 투명한 코드는 인자를 변경하거나 다른 외부 데이터를 변경하지 않으며, 그에 따라 코드를 호출하는 쪽의 데이터가 오염되거나 동시 접근으로 인해 오류가 발생하는 경우가 없다.
(5) 자신이 제대로 작동하기 위해 외부 장치에 의존하지 않는다. 즉, 외부 장치(DB, 파일 시스템, 네트워크)를 사용할 수 없거나 너무 느릴때 게속 대기 상태에 머무는 경우가 없다.

profile
개발자

0개의 댓글