암묵적 입출력

암묵적 입출력

암묵적 입력

함수를 호출하는 동안 결과에 영향을 줄 수 있는 것 (인자를 제외한 모든 입력이 해당됨)

입력이란 함수 인자를 포함해서 함수 외부 스코프의 변수를 읽거나 외부 프로세스(DB) 값을 가져오는 것

즉, 함수 인자는 명시적 입력이 되고 그 외는 모두 암묵적 입력이 된다.

암묵적 출력

함수 호출의 결과로 영향을 받는 것 (반환값을 제외한 모든 출력)

출력이란 함수의 반환값을 포함하여 전역 변수 또는 외부 변수를 변경하거나, 외부 프로세스를 호출하는 행위

즉, 반환값은 명시적 출력이 되고 그 외는 모두 암묵적 출력이 된다.

암묵적 입출력은 줄이면 줄일수록 좋다.

어떤 함수에 암묵적 입출력이 있다면 다른 모듈과 강하게 결합되어 있다는 의미이다.

즉, 다른 곳에서 사용할 수 없기 때문에 모듈이 아니게 되고, 함수의 동작은 연결된 함수의 동작에 의존적이게 된다.

이런 암묵적 입출력을 명시적으로 바꾸어 재사용이 가능한 모듈로 바꾸어 보자.

암묵적 입출력이 포함된 함수의 단점

  • 의존하는 코드가 변경이되면 영향을 받기 때문에 코드의 유연성과 확장성을 저해한다.

  • 아무때나 독립적으로 실행할 수 없고 의존하는 부분을 함께 고려해야하기 때문에 테스트하기 어려워진다.

  • 코드의 흐름을 파악하기 어렵다.

모든 암묵적 입출력을 제거할 수는 없더라도 줄이려고 노력하면 테스트 용이성과, 재사용성을 높힐 수 있다.

암묵적 입출력 줄이기

암묵적 입력 즉, 의존적인 입력들은 명시적으로 함수의 인자값으로 변경하는식으로 제거할 수 있다.

암묵적 출력 즉, 부수효과는 함수 바깥으로 분리 및 격리시켜서 명시적인 반환 값을 사용하여 동작할 수 있도록 수정

Last updated