조건문: 파트 2

레거시 조건문의 문제.



주요 문제는 추악하고 지루하다는 것입니다. 을 참조하십시오.

조건을 작성하고 유지하는 데 많은 시간이 걸립니다. 다음을 고려하십시오.

  private demo(myVar: string): string {
    if(myVar === 'condition') {
      return myVar.substring(1,3);
    }
    if(myVar === 'demo') {
      return myVar.substring(1,2);
    }
    if(myVar === 'thing') {
      return myVar.substring(1,4);
    }
    if(myVar === 'demo1') {
      return myVar.substring(1,5);
    }
    if(myVar === 'demo5') {
      return myVar.substring(1,2);
    }
    return '';
  }

이제 위의 코드는 어떤 경우에는 좋을 수 있지만 더 잘할 수 있습니다.
컨디셔닝을 위해 개체 사용

  private demo1(myVar: string): string {
    const myObject: { [key: string]: string; } = {
      'condition': myVar.substring(1,3),
      'demo': myVar.substring(1,2),
      'thing': myVar.substring(1,4),
      'demo1': myVar.substring(1,5),
      'demo5': myVar.substring(1,2),
    }
    return myObject[myVar];
  }

  demo1('condition'); 

위의 if 문과 동일하게 작동하지만 깨끗한 코드입니다.

기본 상태도 확인하고 싶으신가요?

  private demo1(myVar: string): string {
    const myObject: { [key: string]: string; } = {
      'condition': myVar.substring(1,3),
      'demo': myVar.substring(1,2),
      'thing': myVar.substring(1,4),
      'demo1': myVar.substring(1,5),
      'demo5': myVar.substring(1,2),
      default: '',
    }

    if(!myObject[myVar]) return myObject['default'];
    return myObject[myVar];
  }

이것은 전반적인 인지 복잡성도 감소시킵니다.

이를 통해 함수 호출도 가능합니다.

  public coc(troopName: string, quantity: number): string {
    const bookForCOC: { [key: string]: any } = {
      'barbarian': () => quantity > 30 ? 'Use it behind kind' : 'Use it to destroy',
      'archer': () => quantity > 20 ? 'Use it behind queen' : 'Use it to destroy',
      'balloon': () => quantity > 20 ? 'Use it behind dragons' : 'Use it after air defense is destroyed',
      'dragon': () => quantity > 3 ? 'Use it at a single place' : 'Use it anywhere else',
      default: () => 'Use some good troops to win'
    }

    if(!bookForCOC[troopName]) return bookForCOC['default']();
    return bookForCOC[troopName]();
  }

조건문의 대안으로 사용할 수 있습니다.

게시물이 마음에 들면 더 많은 것을 위해 나를 따르십시오.


.ltag__user__id__682652 .follow-action-button {
배경색: #4666b8 !중요;
색상: #ffffff !중요;
border-color: #4666b8 !중요;
}



라훌 라즈 팔로우



I am a developer who is trying to improve myself day by day.

좋은 웹페이지 즐겨찾기