Backend/Java

순수 함수란?

간지나제 2022. 8. 12. 15:52

순수 함수

  • 부수효과가 없는 함수
  • 어떤 함수에 동일한 인자를 주었을 때 항상 같은 값을 리턴하는 함수
  • 외부의 상태를 변경하지 않음

부수효과

  • 외부의 상태를 변경하는 것
  • 함수로 들어온 인자의 상태를 직접 변경하는 것

ex)

int add(int a, int b) {
  return a + b;
}

여기서 add 함수는 인수로 같은 값을 주었을 때 리턴 값은 항상 같기 때문에 순수함수이다.

int c = 20;
int add2(int a, int b) {
  return a + b + c;
}
System.out.println(add2(10, 20)); // 50
c = 10;
System.out.println(add2(10, 20)); // 40

add2 함수에 add 함수와 동일한 인수를 넣어도 결과값이 달라진다. 순수함수가 아니다.

class Exmaple {
  int a;
  int b;
}

...
int add2(Example example) {
  example.a = 10;
  ...
}

위의 예제와 같이 외부 객체의 값을 다른 클래스의 메서드에서 값을 변경한다.
외부의 값을 변경했기 때문에 순수함수라고 할 수 없다.

'Backend > Java' 카테고리의 다른 글

@Retention  (0) 2022.08.15
Annotation(@)  (0) 2022.08.15
람다식(Lambda Expression), 람다란(Lambda)?  (0) 2022.08.12
Reflection(리플렉션)  (0) 2022.08.08
직렬화  (0) 2021.06.12