[분리주의자 일기] 쿼리 스트링에서 아이디 구하기

Nekoromancer·2021년 5월 23일
0

분리주의자 일기

목록 보기
1/2

노한 개발자의
펙토링 일기

저의 코드들도 있지만 주로 후임 개발자의 코드입니다. 언제나 밝은 표정과 잔잔한 정신, 온화한 태도로 차분하게 가르쳐 주세요.

원래코드(Nuxt.js 입니다)

const query = route.value.query;
let multiSelectedIds = null;
let level = 0;

if (query.cate1Id) {
    multiSelectedIds = [Number(query.cate1Id)];
    level = 1;
    if (query.cate2Id) {
        multiSelectedIds.push(Number(query.cate2Id));
        level = 2;
        if (query.cate3Ids) {
            multiSelectedIds.push(query.cate3Ids.split(',').map(item => Number(item)));
            level = 3;
         }
     }
}

리펙토링후

import fp from 'lodash/fp';

// ...

const query = route.value.query;
const getIds = query => {
const { cate1Id, cate2Id, cate3Ids } = query;
    const categoryIds = { cate1Id, cate2Id, cate3Ids };
    const ids = fp.flow(
        fp.toPairs,
        fp.dropRightWhile(([_, value]) => !value),
        fp.map(([key, value]) => (
            key === 'cate3Ids'
              ? value.split(',').map(i => Number(i))
              : Number(value)
        )),
    )({ ...categoryIds });
        
    return {
        level: ids.length,
        ids,
    };
}

const { ids: multiSelectedIds, level } = getIds(query);

변수 네이밍이 마음에 안들지만 지금 그것보다 중요한 문제들이 산적해 있기 때문에 다음을 기약한다...

profile
고양이 앓이 중인 프론트엔드 개발자

0개의 댓글