Development/Javascript
[Typescript] 간단하게 리팩토링 한 내용
nabina
2019. 7. 4. 11:00
728x90
처음엔 단순하게 string을 enum으로 변경하는 함수로 개발했었다.
private convertTriggerFromDb( webhookInfo: WebhookEntity ) {
if( !_.isEmpty( webhookInfo.triggerStr ) ) {
return trigger = webhookInfo.triggerStr.split( ',' ).map( v => IncomingTriggerType[ v ] );
}
return undefined;
}
그러다 타입이 늘어나 이렇게 되어버렸다.
private convertTriggerFromDb( webhookInfo: WebhookEntity ) {
if( !_.isEmpty( webhookInfo.triggerStr ) ) {
if( webhookInfo.type === WebHookType.INCOMING ) {
return webhookInfo.triggerStr.split( ',' ).map( v => IncomingTriggerType[ v ] );
} else {
return webhookInfo.triggerStr.split( ',' ).map( v => OutgoingTriggerTypeValues[ v ] );
}
}
return undefined;
}
마음에 안 드는 중복코드가 생겨서 이렇게 바꿨다.
private convertTriggerFromDb( webhookInfo: WebhookEntity ) {
if( !_.isEmpty( webhookInfo.triggerStr ) ) {
let trigger = webhookInfo.triggerStr.split( ',' );
if( webhookInfo.type === WebHookType.INCOMING ) {
trigger = trigger.map( v => IncomingTriggerType[ v ] );
} else {
trigger = trigger.map( v => OutgoingTriggerTypeValues[ v ] );
}
return trigger;
}
return undefined;
}
그런데 이것도 마음에 안 들었다. 그래서 이렇게 바꿨다.
private convertTriggerFromDb( webhookInfo: WebhookEntity ) {
if( !_.isEmpty( webhookInfo.triggerStr ) ) {
let triggerType: typeof IncomingTriggerType | typeof OutgoingTriggerTypeValues = IncomingTriggerType;
if( webhookInfo.type !== WebHookType.INCOMING ) {
triggerType = OutgoingTriggerTypeValues;
}
return webhookInfo.triggerStr.split( ',' ).map( v => triggerType[ v ] );
}
return undefined;
}
근데 이것도 맘에 안 든다ㅜㅜ 그래서 파라미터도 바꿨다.
private convertTriggerFromDb( type: WebHookType, triggerStr: string ) {
if( !_.isEmpty( triggerStr ) ) {
let triggerType: typeof IncomingTriggerType | typeof OutgoingTriggerTypeValues = IncomingTriggerType;
if( type !== WebHookType.INCOMING ) {
triggerType = OutgoingTriggerTypeValues;
}
return triggerStr.split( ',' ).map( v => triggerType[ v ] );
}
return undefined;
}
그래도 맘에 안 듬.. 그리고 최종..
private convertTriggerFromDb( type: WebHookType, triggerStr: string ) {
if( _.isEmpty( triggerStr ) ) {
return undefined;
}
let triggerType: typeof IncomingTriggerType | typeof OutgoingTriggerTypeValues = IncomingTriggerType;
if( type !== WebHookType.INCOMING ) {
triggerType = OutgoingTriggerTypeValues;
}
return triggerStr.split( ',' ).map( v => triggerType[ v ] );
}
개인적으로 삼항 연산자를 별로 안 좋아해서 변수 선언과 if 문을 한 줄로 줄일 수 있긴 한데 그렇게 하지 않았다. 그럼 아마 이게 최종이지 않을까 싶다. 더 고치면 더 달아야지 ㅎ
반응형