ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 4. 흐름제어
    Technique/Readable Code 2015. 12. 10. 10:34
    반응형

    조건, 루프, 흐름을 통제하는 선언문이 코드에 없으면 코드를 매우 읽기 편할 것 이다.

    이와 같은 분기문, 점프문은 어려운 대상이며, 코드를 복잡하게 만드는 원인이다.


    ■ 흐름을 제어하는 조건과 루프 그리고 여타 요소를 최대한 자연스럽게 만들도록 노력하라. 코드를 읽다가 다시 되돌아가서 코드를 읽지 않아돋 되게끔 만들어야 한다.


    ■ 조건문에서의 인수의 순서

        a > b  b > a 에서 값을 어디에 두는가

        왼쪽 : 값이 더 유동적인 질문을 받는 표현

        오른 쪽 : 더 고정적인 값으로 비교 대상으로 사용 되는 표현

        ex )  length >= 10

                10 <= length

                 length같이 변화가 빈번한 값을 왼쪽에 두면 읽기 편하다.


    ■ if / else 블록의 순서

        if( a == b  ){

        } else {

        }

        와 

        if( a != b ){

        } else {

        } 

        의 경우 

        - 부정이아닌 긍정을 다루어라 if( !debug ) 보다는 if( debug ) 쪽을 선호 하자

        - 간단한 것을 먼저 처리하자. 이렇게 하면 동시에 같은 화면에  if/else 구문을 나타낼 수도 있다.

        - 더 흥미롭고, 확실한 것을 먼저 다루어라 

        다시 한번 이야기하지만 이렇게 표현하면 인간적인 의미에서 조금더 읽기 편하단 것 이지 무조건 이렇게 쓸 필요는 없다. 상황에 따라 대응하자


    ■ 삼항 연산자를 이용한 조건문

        - 줄수를 최소화 하는 일보다 다른 사람이 코드를 읽고 이해하는데 걸리는 시간을 최소화하는 일이 더 중요하다

        - 기본적으로 if / else를 사용하고, 매우 간단한 연산일 경우 삼항 연산자를 사용하자.


    ■ do/while은 피하라

        - 일반적으로 논리적인 조건은 그것이 감싸는 코드 위에 놓인다 if, while, for 같이 모두 위에 조건이 제시된다.

          하지만 그 역순이기 때문에 굉장히 부자연스럽다.

        - 조건은 눈에 뜨이는 곳에 미리 나타내는 것 이 좋다.


    ■ 함수 중간에서 반환하기

        - 중간에서 값일 반환해야할 경우, 굳이 불필요하게 끝까지 다 실행하지 않아도 된다면 중간에 반환시켜버리자


    ■ goto

        - goto는 그렇게 문제되는 녀석이아니다. 하지만 이 goto가 이동할 수 있는 장소가 여러곳으로 늘어나면서 시작되며, 경로가 서로 교차할 때 더욱 심각해진다

        특히 goto의 목표 위치가 위로 향하면서 스파게티 코드가 양산된다


    ■ 중첩을 최소화 하라

        - 코드의 중첩이 심할수록 이해하기 어렵다. 

        - 수정해야 하는 상황이라면 코드를 새로운 관점에서 바라보라, 뒤로 물러서서 코드 전체를 살펴보라

        - 함수 중간에서 반환하여 중첩을 중첩을 제거하라

    여기서 이야기 하는 중첩이란 if 안에 또다른 if가 나오고 또  if가 나와서 읽고 있는 사람이 지금 자신이 어느 if안에 들어와 있는지 햇갈리가 되는 것을 나타낸다.


    이 곳에서 설명하는 모든 방법들은 최선의 방법이지 꼭 이렇게 해야하는 방법은 아니다.

    읽으면서 항상 주의하자 

    이렇게 하는 경우 대부분의 사람이 읽기 쉽다 이지  코드는 무조건 이렇게 짜야한다! 가 아니란 소리이다.

    반응형

    'Technique > Readable Code' 카테고리의 다른 글

    6. 변수와 가독성  (0) 2015.12.10
    5. 거대판 표현을 잘게 쪼개기  (0) 2015.12.10
    3. 주석  (0) 2015.12.09
    2. 미학 - 읽기 편한 코드 작성  (0) 2015.12.09
    1. 이름에 정보를 담아라  (0) 2015.12.08

    댓글

Designed by Tistory.