좋은 함수, 어디에서나 좋은 함수?

00_8_3·2023년 3월 3일
0

0 도입

향로님의 좋은 함수 만들기를 읽고

1 자바스크립트 타입스크립트

순수함수란

사이드 이펙트가 없는 함수.
외부 api 사용없는 함수
비동기 사용 안하는 함수.
async await.

side effect

입력 값 없는데 반환은 있는
입력 값 있는데 반환은 없는
둘 다의 경우

좋은함수

하지만 DB의 데이터를 받아오는
비동기적인 부분을 제거 할 수는 없으니

위와 같은 경우를 최대한 적용하여

부작용 함수의 범위를 줄이는 것이 중요한 점이다.

2 고랭

자바스크립트와 같이 일급함수를 지원한다.
하지만 위와 같이 순수함수를 만들어 쓰는 것은 옳지 못한 것 같다.

포인터를 전달하면 수신자가 알아차리지 못 하는 사이드 이펙트가 외부에서 발생 할 수 있다.

고랭은 함수형 패러다임이든 객체지향이든 사용은 가능하지만
의도적으로 어떠한 패러다임을 사용도록 설계되지는 않았다.
(class나 상속은 없지만 oop가 가능한 것 처럼)

포인터

물론 포인터와 같은 참조 값을 사용하지 않으면 의도적으로 순수함수를 만들어 사용 할 수는 있다.
하지만 이와 같은 방식은 Go의 장점을 반감하는 방법이라 생각이 들며 좋지 않아 보인다.

역할과 책임

고랭에서도 좋은 함수와 같은 방법은 있다.
패키지 단위에서 오는 책임 분리
또는 인터페이스 정의를 통한 역할 분리를 통해

좋은 코드를 작성 할 수 있다.

3 결론

좋은 함수란
각 언어에서 구현 할 수 있는 방법에 따라 다른 것 같다.

JS에서는 좋은 방법이었겠지만
Go에서 같은 방법을 사용한다면 포인터가 갖는 장점을 살리지 못하는 것 처럼 말이다.

4 참고

https://jojoldu.tistory.com/703

0개의 댓글