강의

멘토링

로드맵

Inflearn brand logo image

인프런 커뮤니티 질문&답변

빡소리님의 프로필 이미지
빡소리

작성한 질문수

오브젝트 - 설계 원칙편

9-6. 중복 코드 제거하기

함수형 스타일에 대해선 어떻게 생각하시나요?

해결된 질문

작성

·

69

·

수정됨

1

이제 꼭 함수형 언어를 사용하지 않더라도 요즘 언어들 대부분 함수형 언어의 아이디어나 장점들을 반영하는 트렌드인데, 회사에서도 코틀린을 사용 중이라 질문 드려봅니다.

코틀린 라이브러리들을 사용하다 보면 함수형 스타일의 설계와 API들을 꽤 많이 보고 있기도 하고 특히 람다를 굉장히 많이 사용하는데 적절하게 람다나 함수형 스타일의 코드를 사용하는 기준이나 원칙들도 있으신지 궁금하네요.

답변 2

2

조영호님의 프로필 이미지
조영호
지식공유자

빡소리님 안녕하세요.

 

저같은 경우에는 객체지향쪽에 치우쳐 있기 때문에 객체지향 패러다임을 중심으로 함수형 패러다임을 접목시키는 방식으로 사용하고 있습니다.

 

전체 구조를 메시지를 주고 받는 객체사이의 협력을 기반으로 구현한다는 점은 동일합니다.

차이점은 객체의 상태 변경 대신 새로운 객체를 반환하거나 도메인 이벤트를 발행시키는 등 함수형을 제한적으로 사용하고 있습니다.

객체 인터페이스에 나타나는 람다는 strategy 패턴을 대체하는 정도의 용도로만 제한적으로 사용하고 있습니다.

 

코틀린 진영을 보면 불변 data 클래스를 사용하고 로직을 함수로 분리하는 방식으로 좀 더 적극적으로 함수형 프로그래밍을 적용하시는 케이스에 대한 이야기를 많이 듣고 있는데 이 부분에 대해서는 저도 경험이 많지 않아서 깊이 있는 내용을 말씀드리기 어렵네요. 🙂

 

설명이 부족해서 죄송합니다.

0

안녕하세요, 인프런 AI 인턴입니다. 빡소리님!

함수형 프로그래밍에 대한 관심이 높아지면서 최근 대부분의 프로그래밍 언어가 함수형 스타일의 요소를 많이 도입하고 있습니다. 코틀린 역시 이러한 트렌드를 적극 반영한 언어 중 하나로, 람다와 같은 함수형 프로그래밍 요소를 통해 코드의 가독성과 유연성을 높일 수 있습니다. 함수형 스타일의 설계와 관련해 몇 가지 기준과 원칙을 소개드리겠습니다:

  1. 상태 변이의 최소화: 함수형 프로그래밍의 핵심은 불변성을 유지하는 것입니다. 상태 변이를 최소화하여 사이드 이펙트를 줄이고 함수의 의존성을 명확하게 만드는 것이 중요합니다. 이는 병행성을 높이고, 테스트를 쉽게 해줍니다.

  2. 순수 함수의 사용: 동일한 입력에 대해 항상 같은 출력을 반환하는 순수 함수 사용이 권장됩니다. 순수 함수는 테스트하기 쉽고, 코드의 예측 가능성을 높입니다.

  3. 함수 합성과 일급 객체: 코틀린에서는 함수를 일급 객체로 다룰 수 있어 다른 함수의 인자로 넘기거나 반환값으로 사용할 수 있습니다. 이는 라이브러리와 API 설계 시 유연한 코드 작성을 가능하게 합니다.

  4. 람다 사용의 적절성: 람다는 코드를 간결하고 직관적으로 만들지만, 복잡한 로직을 람다에 모두 담는 것은 좋지 않습니다. 람다는 주로 컬렉션 처리, 간단한 이벤트 핸들링 등에 유용하게 사용할 수 있습니다.

코틀린의 함수형 스타일 관련해서는 아래 유사한 질문과 관련 답변을 참조해보시면 더 많은 정보를 얻을 수 있습니다:

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

빡소리님의 프로필 이미지
빡소리

작성한 질문수

질문하기