14장 - 순차적 코드 구성하기
Edited by / 임수형 (sulogc)
- 이 장에서는 데이터 프로그래밍 관점에서 명령문 중심 관점으로 전환한다.
- 명령문, 명령문 블록을 순차적으로 입력하는 간단한 형태의 제어 구조 소개
- 미묘한 차이가 코드의 품질과 정확도, 가독성, 유지보수성에 영향을 미친다.
14-1 순서가 중요한 명령문
14-2 순서가 중요하지 않은 명령문
정렬하기 쉬운 순차적인 명령문은 순서가 중요한 명령문이다.
data = ReadData();
results = CalculateResultsFromData( data );
PrintResults( results );
각 루팅의 이름에서 의존성을 추론할 수 있다.
ComputeMarktingExpense
ConputeSalesExpanse
...
ComputeMarktingExpense()가 클래스 맴버 변수를초기화 한다고 할 때, 가장 먼저 호출되어야한다. 하지만 각 루틴이 매개변수를 갖고 있지 않기 때문에 코드만 봐서 의존성 파악이 어렵다. 그렇기 때문에, 명령문이 의존성을 갖고 있을 때에는 이를 분명히 하기 위한 단계를 밟아야 한다.
- 의존성이 분명하게 보이게 코드를 구성하라. (
ComputeMarktingExpense()
->InitializeExpenseData()
) - 의존성이 분명하게 보이게 루틴으 이름을 작성하라. (->
ComputeMarktingExpenseAndInitializeExpenseData()
이름이 이상해 보이는건 루틴이 문제다..) 의존성을 분명히 하기 위해서 루틴 매개변수를 사용하라.
- 의존성이 분명하지 않은 부분은 주석으로 문서화하라.
- 어설션이나 오류 처리 코드로 의존성을 검사하라
14-2 순서가 중요하지 않은 명령문
직접적인 의존성이 없는 경우, 연관된 작업을 함께 두는 근접성 원칙에 따라 명령문을 구성한다.
코드를 하향식으로 읽을 수 있도록 개발
기본 원칙은 프로그램을 여기저기 건너뛰지 않고 하향식으로 읽을 수 있게 개발하는 것이다.
marketingData
가 어떻게 사용되는지 뜨문뜨문 계속 확인하고 기억해야한다.
각 객체에 대해 참조를 둘 수 있고, 이를 지역화 되었다고 할 수 있다.
연관된 명령문 그룹화하기
비슷한 작업을 수행하거나 같은 데이터를 처리하는 경우 함께 둔다.
관련 명령문을 그룹화 한 다음 상자를 그려보면, 상자가 겹치는 정도에 따라 그룹화가 잘 되었는지 확인할 수 있다.