순수 함수는 전달 받은 파라미터에 따라서만 값을 반환하며 전역 상태에 영향을 미치거나 영향받지 않는다. 자바에서는 checked exception 이 수행되는 몇 케이스들만 제외하면 이렇게 동작하게 하는게 가능하다.

아래 코드는 순수 함수다. 입력 값이 같으면 같은 값을 출력하며 그 동작을 예측하기 매우 쉽다. 필요하다면 이 메소드를 안전하게 캐싱할 수 있다.

public static int sum(int a, int b) {
    return a + b;
}

이 함수에 아래와 같이 추가적인 코드를 추가하면 외부상태에 영향을 미치는 부작용을 갖게 되며 행위를 예측할 수 없는 상태가 된다.

static Map map = new HashMap<String, Integer>();

public static int sum(int a, int b) {
    var c = a + b;
    map.put(a + "+" + b, c);
    return c;
}

따라서 함수는 순수하고 단순하게 유지하도록 하자.

출처 : https://sthwin.tistory.com/21