-
Notifications
You must be signed in to change notification settings - Fork 101
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Bug]: 공백이 포함된 초성 검색 시 예상치 못한 false 반환 문제 #41
Comments
좋은 의견과, 해결책까지 제시해주셔서 감사해요!
코맨트와 비슷한 의견인데요, 함수의 목적에 맞게 chosungIncludes는 예시'빌즈 강남'을 'ㅂㅈ ㄱㄴ'으로 검색했을 때 일치하는 결과가 반환되길 원한다면 아래와 같이 사용해도 좋을 것 같아요! const word = "빌즈 강남";
const chosung = "ㅂㅈ ㄱㄴ";
const trimmedWord = word.replace(/\s/g, '');
const trimmedChosung = chosung.replace(/\s/g, '');
const 유저가_입력한_초성이_단어에_맞는가 = chosungIncludes(trimmedWord, trimmedChosung); 함수 내부에서 처리하지 않기로 한다면, DOCS에 추가 꿀팁 같은것을 남겨도 좋을 것 같아요. 예시🍯 공백을 포함한 단어도 처리하고 싶다면, 다음과 같이 사용해보세요! |
먼저, 좋은 의견 감사드립니다! 첨부해 주신 코멘트 또한 매우 유용했습니다. 기존코드const initialConsonantsY = getFirstConsonants(y).replace(/\s/g, '');
따라서, 더 나은 사용자 경험을 위해 띄어쓰기까지 고려하는 것을 서비스 개발자에게 맡긴다면, 다음과 같이 개선할 수 있을 것 같습니다. 개선하기1. 불필요한 공백 제거 로직을 제외한다const initialConsonantsY = getFirstConsonants(y); 2. 문서화의 역할을 겸하는 테스트코드를 추가한다it('should return false when "ㅍㅌㅌㅇㄷ ㄱㅂㅈ" is entered for searching "프론트엔드 개발자" as the function does not support spaces in the input', () => {
expect(chosungIncludes('프론트엔드 개발자', 'ㅍㄹㅌㅇㄷ ㄱㅂㅈ')).toBe(false);
}); 3.
|
네! Docs에 접근하는게 크게 어렵진 않을 것 같아서, Docs에 라이브러리 맥락에 대한 정보를 최대한 담으려고 하고 있어요! TSDoc도 사용하면 좋겠지만, TSDoc과, Docs 두벌을 관리하기에는 점점 라이브러리가 커감에 따라, 두 문서간 어긋나는 부분도 생기고 SSOT를 지키기 어려울 것 같다고 생각해요. 당연히 TSDoc를 사용하면 개발자 경험은 좋을 것이라는 의견에는 동의합니다! 나중에 한번 더 이 부분 리비짓 해보시죠! |
저는 공백까지 처리하는 것이 함수의 관심사에서 크게 벗어나는 것은 아닌 것 같다고 생각합니다! 가령 두 분이 작성해주신 코멘트나 제가 작성하고 있는 이 글만 봐도 공백이 없는 문자열을 찾아볼 수 없다는 것을 알 수 있슴다. 한글이라는 관심사의 특수성
한글을 다루는 녀석이라면 한글 문법에서 필수적인 띄어쓰기까지도 관심사에 포함해야하는 것이 아닌가 하는 생각이 들었습니다. DX에 대한 Concern띄어쓰기가 한글에서 떼어내기 힘든 요소라고 가정했을때, 결국 게다가 클라이언트에서 다루는 값은 대부분 어플리케이션 외부 세계인 API 응답, 유저의 입력 등과 같은 곳에서 생성되는 경우가 많으니, 이러한 예외처리를 건너뛸 수 있는 상황도 드물 것 같아요. 이렇게 어떤 함수를 사용하기 전에 매번 예외처리를 해줘야 한다면 생산성 측면에서 DX가 떨어지지는 않을까 하는 우려가 됩니다. 결론그래서 저는 아래와 같이 chosungIncludes('프론트엔드 개발자', 'ㅍㄹㅌㅇㄷ ㄱㅂㅈ') // true
chosungIncludes('프론트엔드 개발자', 'ㅍㄹㅌㅇㄷㄱㅂㅈ') // true
chosungIncludes('프론트엔드개발자', 'ㅍㄹㅌㅇㄷ ㄱㅂㅈ') // true
chosungIncludes('프론트엔드개발자', 'ㅍㄹㅌㅇㄷㄱㅂㅈ') // true
chosungIncludes('프론트엔드 개발자', ' ') // 공백만 있으면 false |
@evan-moon , @okinawaa 님의 소중한 의견을 모두 귀담아 듣고 다음과 같이 제 의견을 정리해보았습니다. 제가 생각하는
|
@evan-moon 님 @BO-LIKE-CHICKEN 님 의견 모두 동의합니다! 좋은 코맨트들 남겨주셔서 너무 많이 배웠어요! |
Bug description
Describe the bug
다음과 같은 테스트 케이스를 추가했으나
false
가 반환되어 테스트가 실패하는 현상을 발견했습니다.Expected behavior
'ㅍㄹㅌㅇㄷ ㄱㅂㅈ' 같은 입력에서도 공백이 포함되어 있어도 정상적으로 동작해야 합니다. 특히 다음 코드 부분에서 공백을 제거하는 로직이 포함되어 있어, 의도하지 않은 버그로 보입니다.
예를 들어 '빌즈 강남'을 'ㅂㅈ ㄱㄴ'으로 검색했을 때 일치하는 결과가 반환되면 사용자 경험에 좋을 것입니다.
To Reproduce
Possible Solution
판단 기준하에 다음과 같은 두 가지 방법으로 문제를 해결 혹은 개선할 수 있을 것으로 예상됩니다.
함수를 수정하고 테스트 코드를 추가합니다.
initialConsonantsY
에서 공백을 제거할 필요 없이 처리하도록 개선하고 테스트 케이스를 추가합니다.Additional context
로 선택한다면 공백 포함 여부를 어떻게 처리할지에 대한 결정이 중요한 요소로 보입니다.
감사합니다 😁
The text was updated successfully, but these errors were encountered: