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 문을 한 줄로 줄일 수 있긴 한데 그렇게 하지 않았다. 그럼 아마 이게 최종이지 않을까 싶다. 더 고치면 더 달아야지 ㅎ
반응형
'Development > Javascript' 카테고리의 다른 글
[Typescript] RegExp의 함수를 사용할 때 주의할 점 (2) | 2020.05.06 |
---|---|
[Node.js] 상위 Directory까지 한 번에 생성하기 (0) | 2019.10.22 |
[mac] nvm으로 node.js 버전 바꾸기 (0) | 2019.06.29 |
[Javascript] for-of에서 index값 사용하고 싶을 때 (0) | 2019.06.26 |
[Typescript] 변수 비구조화 (Destructuring) (0) | 2019.03.12 |