분노한 개발자의
리펙토링 일기
저의 코드들도 있지만 주로 후임 개발자의 코드입니다. 언제나 밝은 표정과 잔잔한 정신, 온화한 태도로 차분하게 가르쳐 주세요.
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);
변수 네이밍이 마음에 안들지만 지금 그것보다 중요한 문제들이 산적해 있기 때문에 다음을 기약한다...