Technique/Readable Code

4. 흐름제어

kaelina 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안에 들어와 있는지 햇갈리가 되는 것을 나타낸다.


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

읽으면서 항상 주의하자 

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

반응형