
126
자바에서 코틀린으로
7.5
왜 계산을 선호하는가?
계산을 선호하는 이유는 계산이 훨씬 더 다루기 쉽기 때문이다. 하지만 우리가 만드는 소프트
웨어는 궁극적으로는 세계에 영향을 끼쳐야 하는데, 이는 동작이다. 하지만 동작과 계산이 겹
치지는 않는다. 코드가 동작인 동시에 계산일 수는 없고, 시간에 의존적인 동시에 독립적일 수
는 없다. 어떤 계산 코드를 가져다 동작을 호출하게 만들면 해당 코드는 동작이 된다. 왜냐하면
이렇게 만든 코드는 언제 호출됐는지나 호출 횟수 등에 따라 결과가 달라지기 때문이다. 계산
을 더 순수한 코드라고 생각할 수 있다. 순수성이 낮을수록 코드가 더 많은 의존 관계로 오염된
다. 같은 경우를
19
장에서 나오는 오류에 대한 민감성을 살펴보도록 하자. 순수성을 (순수성
이 가져오는 추론과 리팩터링의 용이성으로 인해) 높이 평가한다면 순수하지 않은 코드와 순
수한 코드 사이의 경계를 가능한 시스템의 바깥쪽 계층, 즉 시스템 진입점에 가까운 위치로 당
겨오도록 노력해야 한다. 만약 이런 개선에 성공한다면 코드 중 상당 부분이 계산일 것이기 때
문에 코드에 대해 더 쉽게 테스트하고, 성질을 추론하고, 리팩터링을 수행할 수 있다.
호출 스택의 맨 아래에 동작을 가두는 데 실패한다면 어떻게 해야 할까? 이런 문제를 리팩터링
으로 해결할 수 있다! ...