생각하며 코딩하기

April 10, 2016 | 0 Minute Read

어제 mecab 랩핑 라이브러리를 만들면서, 명사만을 추출하는 함수를 만들 때, 조건문 부분을 코딩하며 생각했던 사고의 흐름을 소개해본다.

추출 대상이 되는 명사의 태그 종류에는 NNP(고유명사)와 NNG(일반명사)가 있다. 그 외의 태그들도 있지만, 명사만을 추출하는 대부분의 경우는 태그 클라우드 등을 만들기 위함이니 두 가지의 종류만 사용하는 것이 대부분일 것이다.

이 둘 중의 하나의 태그일 때만 로직을 돌게 하려면 조건문을 어떻게 써야할까? if 문을 사용 하는 것이 좋을까? 아니면 딕셔너리 참조등을 사용하는 것이 좋을까?

NNP와 NNG 이외의 다른 태그를 나중에 추가하게 될 수도 있겠지만, 일단은 두 개가 기본이니 거의 바뀌지 않을 것이고, 그렇다면 당장은 명시적인 if 문을 사용하는 것이 좋겠다. 그러면 if 문의 조건은,

if (tag === ‘NNP’   tag === ‘NNG’) {

이렇게 해야할까? 아니면,

if (tag === ‘NNG’   tag === ‘‘NNP’) {

그럼 둘 중에 어떤 것이 성능이 좋을까? 아무래도 고유명사보다는 일반명사가 대개의 경우 훨씬 더 많을 것이므로, 일반명사의 조건을 앞으로 빼는 것이 좋을 것이다.

그래서 마지막으로 선택한 것이 후자.

이런 방식이 정답은 아니겠지만, 이런식으로 세세하게 로직을 고민하면, 로직의 근본적인 부분까지 고민하게 되어 여러모로 도움이 되는 것 같다.