ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 리팩터링 2판 - 10. 조건부 로직 간소화
    Books/리팩터링 2판 2022. 6. 20. 09:53

    10-1. 챕터 소개 & 포인트 정리

    조건부 로직 간소화 ( Simplifying Conditional Expressions )

    - 코드의 의도(목적)을 나타내도록 하자!

     

    10-2. 조건문 분해하기 ( 책 10.1 )

    10-3. 조건식 통합하기 ( 책 10.2 )

    10-4. 중첩 조건문을 보호 구문으로 바꾸기 ( 책 10.3 )

    - 특정한 조건이면 바로 리턴한다 - 보호 구문

    - 안좋은 예

    if(employee !== null){
        // 특정한 로직들을 많이 처리하는 코드
    } else {
        return ;
    }

    - 좋은 예

    if(employee === null) return;
    
    // 특정한 로직들을 많이 처리하는 코드

    10-5. 조건부 로직을 다형성으로 바꾸기1 ( 책 10.4 )

    - switch~case 를 남발하는 것보다는 객체지향을 이용해서 class를 만드는 것이 더 좋다.

    - switch~case 에서 타입별로 무언가 한다면 각각의 타입이 클래스로 되는게 좋지 않은지? 공통된 특징을 가진 클래스로 추출할 수 있다면 다형성을 이용해 좀 더 심플하게 유지보수성이 높은 코드를 만들 수 있다.

     

    10-6. 조건부 로직을 다형성으로 바꾸기2 ( 책 10.4 )

    - 상속이라는 것이 새, 동물, 음식, 사람, 은행 뿐만이 아니라 물질적인 것이 아닌

    점수, 등급, 신용정보 등도 다 클래스로 만들어서 서로 공통된 것은 하나의 추상 클래스로 묶어두고 다른 부분만 따로 빼두어서 오버라이딩해 나가면서 다른 계산을 하도록 만들면 조건문을 굳이 사용하지 않아도 다형성만으로 깔끔하게 만들 수 있다.

    - 상속을 남용하는 것보다 위임( composition )을 사용할 때가 더 나을 때가 있다.

     

    10-7. 특이 케이스 추가하기 ( 책 10.5 )

    - 특이 케이스가 있을때 null을 사용하는 대신에 null을 나타낼 수 있는 null 객체를 이용할 것

    - 다형성, 유지보수성, 확장성에 좋다.

     

    10-8. 어서션 추가하기 ( 책 10.6 )

    - 어서션은 실수하지 않도록 알려주는데 도움을 줌

    - assert() : 참일 경우 참이 되는 것을 명시하고, 참이 아닌 경우는 앱이 크래쉬된다.

    import {strict as assert} from 'node:assert';
    
    assert(number >= 0);

    - 개발 단계에서는 실제로 애플리케이션이 죽어서 개발자가 바로 알 수 있게 해주고

    - 사용자에게 배포된 뒤로는 배포용, 애플리케이션이 죽는 대신에 버그리포트시스템에 버그리포트만 해둔다.

     

    10-9. 제어 플래그를 탈출문으로 바꾸기 ( 책 10.7 )

    - for문 while문에서 break, continue 이용할 것

    - 최대한 불리언 타입의 변수를 쓰지않고 코드를 짤 것

     

    댓글

Designed by Tistory.