향로님의 좋은 함수 만들기
를 읽고
사이드 이펙트가 없는 함수.
외부 api 사용없는 함수
비동기 사용 안하는 함수.
async await.
입력 값 없는데 반환은 있는
입력 값 있는데 반환은 없는
둘 다의 경우
하지만 DB의 데이터를 받아오는
비동기적인 부분을 제거 할 수는 없으니
위와 같은 경우를 최대한 적용하여
부작용 함수의 범위를 줄이는 것이 중요한 점이다.
자바스크립트와 같이 일급함수를 지원한다.
하지만 위와 같이 순수함수를 만들어 쓰는 것은 옳지 못한 것 같다.
포인터를 전달하면 수신자가 알아차리지 못 하는 사이드 이펙트가 외부에서 발생 할 수 있다.
고랭은 함수형 패러다임이든 객체지향이든 사용은 가능하지만
의도적으로 어떠한 패러다임을 사용도록 설계되지는 않았다.
(class나 상속은 없지만 oop가 가능한 것 처럼)
물론 포인터와 같은 참조 값을 사용하지 않으면 의도적으로 순수함수를 만들어 사용 할 수는 있다.
하지만 이와 같은 방식은 Go의 장점을 반감하는 방법이라 생각이 들며 좋지 않아 보인다.
고랭에서도 좋은 함수
와 같은 방법은 있다.
패키지 단위에서 오는 책임 분리
또는 인터페이스 정의를 통한 역할 분리를 통해
좋은 코드
를 작성 할 수 있다.
좋은 함수란
각 언어에서 구현 할 수 있는 방법에 따라 다른 것 같다.
JS에서는 좋은 방법이었겠지만
Go에서 같은 방법을 사용한다면 포인터가 갖는 장점을 살리지 못하는 것 처럼 말이다.