한번에 하나씩

  • '한 번에 한 가지' 일만 하도록 논리적 영역 단위로 코드를 재조직하라

  1. 모든 작업을 나열해보아라

  2. 그 작업들을 서로 다른 함수로 쪼개어도 좋고, 최소한 한 함수 안에서라도 구분해서 놓아두라.

작업은 작을 수 있다.

작업 목록 1. old_vote와 new_vote가 각각 수치값으로 해석된다. 2. 수치값을 반영하여 총 점수가 변경된다.

객체에서 값 추출하기

  • 목표 값은 LocalityName + ", " + CountryName

  • LocalityName이 없으면 SubAdministrativeAreaName, SubAdministrativeAreaName도 없으면 AdministrativeAreaName로 대체한다고 가정

그런데 만약에 미국일 때만 CountryName 대신에 AdministrativeAreaName를 써야한다면?

작업 목록 1. location_info 객체에서 값을 읽어 저장하기. 2. '도시'의 값을 정하기 위해서 정해진 순서대로 탐색. 모두 비어있다면 '아무 곳도 아닌 곳'이라는 기본값을 입력 3. '나라' 값을 정함. 비어있다면 '지구'로 설정 4. place 변경

더 큰 예제

  • 웹 크롤링 시스템에서 각 웹페이지를 호출해서 모두 받고 나면 호출되는 함수

  • 그러나 httpDownload가 위와 같은 메소드들을 제공하지 않음

  • 또한 값이 아예 존재하지 않을 수도 있음.

작업 목록 1. 기본값 "unknown" 할당 2. httpDownload의 멤버 값 확인 3. 값을 읽어서 문자열로 변환 4. counts[] 갱신

  • 위의 개선된 코드에서 함수를 추출해내는 것도 좋은 방법.

Last updated