함수 작성할 때, keyword argument functions 를 많이 사용하시나요? 저희 코드는 주로 find-user-by-id find-user-by-name find-user-by-address 이런 식으로 되어있는데, 1.11 이후로 map 을 키워드 인자처럼 쓸 수 있으니 find-user 이런 하나의 함수와 map 을 인자로 넘기는 것이 idiomatic 한 것이 아닌가 싶어서, 다른 분들은 어찌 하시는지가 궁금합니다.
가능한 옵션 조합에 대한 검증을 잘 하는 방법이 부족해서 이런 현상이 나오지 싶습니다
타입이 없는 상황에서는 스펙이나 말리를 잘 써야만 키워드 인자를 안심하고 활용할 수 있을 것 같네요
저는 2달 전까지 타입스크립트를 열심히 써왔는데. 타입스크립트를 써도 깔끔하게 해결되진 않더라고요. 옵션 조합을 검증하더라도 타입 에러가 친절하지 않아서. 문서나 테스트 같은 예시를 잘 만들어야 하나 싶긴 합니다.
음 에러가 친절하냐 보다는, 에러를 낼 수 있느냐가 더 중요해서요
타입이 없는게 문제는 맞다고 봐요
아 그런 이야기는 아니었구. 그래서 저희는 옵션이 많은 인터페이스를 안 만드는 편입니다.
정적 타입 언어에서도요!
암묵적으로 예상치 못한 조합이 들어올 여지가 커지지 않나...
이게 어드민에서 필터가 굉장히 복잡한 경우는 애초에 요구사항이 그러한지라 ㅎㅎ ㅠ
그런 경우면 에러가 나도 그러려니 하고 쓰면 되지 않을까 ^^;;;
물론 내부툴 고객이 아니라
외부에 공개하는 어드민이면 힘들 수는 있겠네요
저희는 find-OOO + options(where, filter) 등등은 인터페이스가 지나치게 넓어진다는 생각이 들어서 지양하는 편입니다. 단순한 Crud만 할 때에는 괜찮을 수도 있는데. soft delete나 여러 로직이 들어가면 경우의 수 조합이 폭발하니까요. (find-user {:id "test" :name "test" :address "<mailto:test@naver.com|test@naver.com>"} 같은 경우에 and로 할 것이냐 or로 할 것이냐 같은...
물론 저 셋이 공유하는 공통 로직이 더 크다거나. 굳이 3 개의 함수로 만드는 게 더 번거롭다거나 하면 합칠 수도 있겠습니다.
하나의 함수로 합친다면 정책이 명확해야겠습니다. (and로 filter한다거나. 셋 중에 하나면 제공한다)