clojure-korea

namenu 2024-04-15T12:03:08.698829Z

함수 작성할 때, keyword argument functions 를 많이 사용하시나요? 저희 코드는 주로 find-user-by-id find-user-by-name find-user-by-address 이런 식으로 되어있는데, 1.11 이후로 map 을 키워드 인자처럼 쓸 수 있으니 find-user 이런 하나의 함수와 map 을 인자로 넘기는 것이 idiomatic 한 것이 아닌가 싶어서, 다른 분들은 어찌 하시는지가 궁금합니다.

namenu 2024-04-18T01:20:36.336399Z

가능한 옵션 조합에 대한 검증을 잘 하는 방법이 부족해서 이런 현상이 나오지 싶습니다

namenu 2024-04-18T01:21:30.002239Z

타입이 없는 상황에서는 스펙이나 말리를 잘 써야만 키워드 인자를 안심하고 활용할 수 있을 것 같네요

김태희(taehee kim) 2024-04-18T02:30:28.571929Z

저는 2달 전까지 타입스크립트를 열심히 써왔는데. 타입스크립트를 써도 깔끔하게 해결되진 않더라고요. 옵션 조합을 검증하더라도 타입 에러가 친절하지 않아서. 문서나 테스트 같은 예시를 잘 만들어야 하나 싶긴 합니다.

namenu 2024-04-18T04:02:02.176399Z

음 에러가 친절하냐 보다는, 에러를 낼 수 있느냐가 더 중요해서요

namenu 2024-04-18T04:02:09.092189Z

타입이 없는게 문제는 맞다고 봐요

김태희(taehee kim) 2024-04-18T05:10:18.077519Z

아 그런 이야기는 아니었구. 그래서 저희는 옵션이 많은 인터페이스를 안 만드는 편입니다.

김태희(taehee kim) 2024-04-18T05:10:26.745209Z

정적 타입 언어에서도요!

김태희(taehee kim) 2024-04-18T05:11:19.052129Z

암묵적으로 예상치 못한 조합이 들어올 여지가 커지지 않나...

namenu 2024-04-18T05:51:22.921049Z

이게 어드민에서 필터가 굉장히 복잡한 경우는 애초에 요구사항이 그러한지라 ㅎㅎ ㅠ

🥲 1
김태희(taehee kim) 2024-04-18T06:03:01.988959Z

그런 경우면 에러가 나도 그러려니 하고 쓰면 되지 않을까 ^^;;;

김태희(taehee kim) 2024-04-18T06:03:14.856049Z

물론 내부툴 고객이 아니라

김태희(taehee kim) 2024-04-18T06:03:23.903149Z

외부에 공개하는 어드민이면 힘들 수는 있겠네요

김태희(taehee kim) 2024-04-17T04:11:28.101179Z

저희는 find-OOO + options(where, filter) 등등은 인터페이스가 지나치게 넓어진다는 생각이 들어서 지양하는 편입니다. 단순한 Crud만 할 때에는 괜찮을 수도 있는데. soft delete나 여러 로직이 들어가면 경우의 수 조합이 폭발하니까요. (find-user {:id "test" :name "test" :address "<mailto:test@naver.com|test@naver.com>"} 같은 경우에 and로 할 것이냐 or로 할 것이냐 같은...

김태희(taehee kim) 2024-04-17T04:12:34.408969Z

물론 저 셋이 공유하는 공통 로직이 더 크다거나. 굳이 3 개의 함수로 만드는 게 더 번거롭다거나 하면 합칠 수도 있겠습니다.

김태희(taehee kim) 2024-04-17T04:13:50.805929Z

하나의 함수로 합친다면 정책이 명확해야겠습니다. (and로 filter한다거나. 셋 중에 하나면 제공한다)