ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [clean code] 4일차
    책 정리/Clean Code 2022. 4. 28. 01:31
    • 오늘의 책읽기: 3장.함수 까지!
    • 오늘의 과제: TIL 작성하기
    • 제출기간: 48시간! 목요일 오전 6시까지

     


    함수에 대해서는 참 다양한 의견들이 있는것 같다. 

    일단 리스트를 만들어보면 아래와 같다.

    • 작게 만들어라
    • 한 가지만 해라
    • 함수 당 추상화 수준은 하나로
    • switch문
    • 서술적인 이름을 사용하라
    • 함수 인수
    • 부수효과를 일으키지 마라
    • 명령과 조회를 분리하라
    • 오류코드보다 예외를 사용하라
    • 반복하지 마라
    • 구조적 프로그래밍

     

    이중에서 감명 깊게 본 페이지만 정리하면 아래와 같다 

     

    p47 
    switch문 
    ... 
    위 함수에는 몇가지 문제가 있다. 첫째, 함수가 길다. 새지권유형을 추가하면 더 길어진다. 둘째, '한 가지' 작업만 수행하지 않는다. 세째, SRP를 위반한다. 코드를 변경할 이유가 여럿이기 때문이다. 넷째, OCP를 위반한다. 새 직원 유형을 추가할때마다 코드를 변경하기 때문이다. 하지만 아마 가장 심각한 문제라면 위 함수와 구조가 동일한 함수가 무한정 존재한다는 것이다.
    더보기

     항상 스위치같은 함수들을 자꾸만 만들게 된다. 

    특히 프론트 작업을 하면 다양한 조건에서 다른 렌더링 페이지를 만들어주기위해 다수의 함수들 호출해서 당장 발등의 불을 끄려고한다. 이런경우 그야말로 스파게티코드가 되더라. 

    이를 해결해주기 위해서 프론트엔드에는 다양한 기법들이 존재하겠진만... 

    흠..오늘 이슈 대응때문에 조금 조사를 못한부분은 사실이다. 

    다형성에 대해 조사해서 OCP,SRP 위반사례와 함께 하나의 포스트를 작성해야함!!

     

     

    p54
    부수효과를 일으키지 마라!
    부수효과는 거짓말이다. 함수에서 한 가지를 하겠다고 약소하고선 남몰래 다른짓도하니까. 때로는 예상치 못하게 클래스 변수를 수정한다. 때로는 함수로 넘어오는 인수나 시스템 전역변수를 수정한다. 어느쪽이든 교활하고 해로운 거짓말이다.
    더보기

    최근 린트를 돌려서 코드를 정리하는 과정에서 발생한 이슈랑 똑같아서 공감수치 100%인 부분이다. 

    예를 들어 아래와 같은 함수였다.

    function () => {
        cosnt result = callApiFucntion();
        return "Done"
    }

    해당 함수에서 린트를 돌리니 결과는 아래와 같다

    function () => {
        return "Done"
    }

     당연한 결과였다. 

    result 라는 변수를 리턴받지만 사용하지 않는걸?

    그렇지만 callApiFunction()에서 외부 api로 호출하는 부분이 완전히 빠져버린것이다. 

    부수효과...조금 억지겠지만 결과 result 의 안정성도 파악하지 않는 코드로 해당 코드는 이미 문제가 있는 코드였다. return 을 받았다면 해당 목적에 맞게 호출한 부분에서 조건에 맞는지 검토하는 코드가 들어있어야하지만 그렇지 못해 린트가 지워버린것!!

    목적에 맞고 필요한 코드를 설계하는 개발자가 되도록하자!

     

    '책 정리 > Clean Code' 카테고리의 다른 글

    [clean code] 6일차  (0) 2022.05.03
    [clean code] 5일차  (0) 2022.05.02
    [clean code] 3일차  (0) 2022.04.26
    [clean code] 2일차  (0) 2022.04.24
    [clean code] 1일차  (0) 2022.04.23

    댓글

Designed by Tistory.