Kotlin

순수 함수

공부처음하는사람 2023. 12. 22. 20:49

순수 함수

  • 순수 함수 이해
    • 동일한 입력 인자에 대해서는 항상 같은 결과를 출력 혹은 반환한다.
      • 값이 예측이 가능해 결정적(deterministic)이다.
//순수 함수의 예
fun sum(a: Int, b: Int): Int {
    return a + b // 동일한 인자인 a, b를 입력받아 항상 a+b를 출력
}

동일한 인자를 받아 100만번을 수행해도 같은 값이 나온다.

  • 순수 함수의 조건
    • 같은 인자에 대하여 항상 같은 값을 반환
      • 함수 외부의 어떤 상태도 바꾸지 않는다. (바꾸지 말아야한다)
        (위에서 한 말이랑 같은말임)
// 순수함수가 아닌 예
fun check() {
    val test = User.grade() // check() 함수에 없는 외부의 User 객체를 사용했음
    if (test != null) process(test) // 변수test는 User.grade의 실행결과에 따라 달라지게 됨
}


//또는

const val global = 10

fun main() {
    val num = 10
    val num2 = 3
    val result = noPureFunction(num1, num2)
    println(result)
}

fun noPureFunction(a: Int, b: Int): Int {
    return a + b + global // noPureFunction에 입력값이 있더라도 외부의 변수 (global을 사용했기 때문에
                       //순수 함수가 아니게 됨)
}
  • 순수 함수를 왜 사용하는가?
    • 입력과 내용을 분리하고 모듈화 하므로 재사용성이 높아진다.
      (여러가지를 조합해도 같은 값이 나오기 때문에 부작용이 없다)
      • 특정 상태에 영향을 주지 않으므로 병행 작업시 안전하다.
      • 함수의 값을 추적하고 예측 할 수 있기 때문에 테스트, 디버깅 등이 유리하다.
        (대충 1번과 같은말)

'Kotlin' 카테고리의 다른 글

내일배움캠프 12.08 TIL  (2) 2023.12.22
내일배움캠프 12.07 TIL  (1) 2023.12.22
내일배움캠프 12.06 TIL  (2) 2023.12.22
객체지향 프로그래밍  (2) 2023.12.22
내일배움캠프 12.04 TIL  (2) 2023.12.22