암묵적 입출력
암묵적 입출력
암묵적 입력
함수를 호출하는 동안 결과에 영향을 줄 수 있는 것 (인자를 제외한 모든 입력이 해당됨)
입력이란 함수 인자를 포함해서 함수 외부 스코프의 변수를 읽거나 외부 프로세스(DB) 값을 가져오는 것
즉, 함수 인자는 명시적 입력이 되고 그 외는 모두 암묵적 입력이 된다.
암묵적 출력
함수 호출의 결과로 영향을 받는 것 (반환값을 제외한 모든 출력)
출력이란 함수의 반환값을 포함하여 전역 변수 또는 외부 변수를 변경하거나, 외부 프로세스를 호출하는 행위
즉, 반환값은 명시적 출력이 되고 그 외는 모두 암묵적 출력이 된다.
암묵적 입출력은 줄이면 줄일수록 좋다.
어떤 함수에 암묵적 입출력이 있다면 다른 모듈과 강하게 결합되어 있다는 의미이다.
즉, 다른 곳에서 사용할 수 없기 때문에 모듈이 아니게 되고, 함수의 동작은 연결된 함수의 동작에 의존적이게 된다.
이런 암묵적 입출력을 명시적으로 바꾸어 재사용이 가능한 모듈로 바꾸어 보자.
암묵적 입출력이 포함된 함수의 단점
의존하는 코드가 변경이되면 영향을 받기 때문에 코드의 유연성과 확장성을 저해한다.
아무때나 독립적으로 실행할 수 없고 의존하는 부분을 함께 고려해야하기 때문에 테스트하기 어려워진다.
코드의 흐름을 파악하기 어렵다.
모든 암묵적 입출력을 제거할 수는 없더라도 줄이려고 노력하면 테스트 용이성과, 재사용성을 높힐 수 있다.
암묵적 입출력 줄이기
암묵적 입력 즉, 의존적인 입력들은 명시적으로 함수의 인자값으로 변경하는식으로 제거할 수 있다.
암묵적 출력 즉, 부수효과는 함수 바깥으로 분리 및 격리시켜서 명시적인 반환 값을 사용하여 동작할 수 있도록 수정
Last updated