14장 - 순차적 코드 구성하기

Edited by / 임수형 (sulogc)

  • 이 장에서는 데이터 프로그래밍 관점에서 명령문 중심 관점으로 전환한다.
  • 명령문, 명령문 블록을 순차적으로 입력하는 간단한 형태의 제어 구조 소개
  • 미묘한 차이가 코드의 품질과 정확도, 가독성, 유지보수성에 영향을 미친다.

14-1 순서가 중요한 명령문

14-2 순서가 중요하지 않은 명령문

정렬하기 쉬운 순차적인 명령문은 순서가 중요한 명령문이다.

data = ReadData();
results = CalculateResultsFromData( data );
PrintResults( results );

각 루팅의 이름에서 의존성을 추론할 수 있다.

ComputeMarktingExpense
ConputeSalesExpanse
...

ComputeMarktingExpense()가 클래스 맴버 변수를초기화 한다고 할 때, 가장 먼저 호출되어야한다. 하지만 각 루틴이 매개변수를 갖고 있지 않기 때문에 코드만 봐서 의존성 파악이 어렵다. 그렇기 때문에, 명령문이 의존성을 갖고 있을 때에는 이를 분명히 하기 위한 단계를 밟아야 한다.

  • 의존성이 분명하게 보이게 코드를 구성하라. (ComputeMarktingExpense() -> InitializeExpenseData())
  • 의존성이 분명하게 보이게 루틴으 이름을 작성하라. (-> ComputeMarktingExpenseAndInitializeExpenseData() 이름이 이상해 보이는건 루틴이 문제다..)
  • 의존성을 분명히 하기 위해서 루틴 매개변수를 사용하라.

  • 의존성이 분명하지 않은 부분은 주석으로 문서화하라.
  • 어설션이나 오류 처리 코드로 의존성을 검사하라

14-2 순서가 중요하지 않은 명령문

직접적인 의존성이 없는 경우, 연관된 작업을 함께 두는 근접성 원칙에 따라 명령문을 구성한다.

코드를 하향식으로 읽을 수 있도록 개발

기본 원칙은 프로그램을 여기저기 건너뛰지 않고 하향식으로 읽을 수 있게 개발하는 것이다.

marketingData가 어떻게 사용되는지 뜨문뜨문 계속 확인하고 기억해야한다.

각 객체에 대해 참조를 둘 수 있고, 이를 지역화 되었다고 할 수 있다.

연관된 명령문 그룹화하기

비슷한 작업을 수행하거나 같은 데이터를 처리하는 경우 함께 둔다.

관련 명령문을 그룹화 한 다음 상자를 그려보면, 상자가 겹치는 정도에 따라 그룹화가 잘 되었는지 확인할 수 있다.