작게 만들어라

호출하는 함수 형식으로 함수는 짧을수록 좋다 2~3줄 내외면 더 좋다. 들여쓰기 구조도 1단이나 2단을 넘어서면 힘들어진다

한 가지만 해라

추상화 단계에서 일을 하는 가짓수가 하나여야 한다 가령 다른 함수를 호출하는 함수가 존재한다면 그 함수는 한가지 일을 하고 있는것이다.

함수 당 추상화 수준은 하나로

한 함수내에 여러가지 추상화 수준을 섞으면 코드를 읽는 사람이 헷갈린다. 특정 표현이 근본 개념인지 아니면 세부사항인지 구분하기 어려운 탓이다.

내려가기 규칙을 활용하자 위에서 아래로 프로그램을 읽을수 있도록 함수 추상화 수준을 한단계씩 내려보자

TO 설정 페이지와 해제 페이지를 포함라혀면, 설정 페이지를 폼학하고, 테스트 페이지 내용을 포함하고 해제 페이지를 포함한다.

  • To 설정 페이지를 포함하려면, 슈트이면 슈트 설정 페이지를 포함한 후 일반 설정 페이지를 포함한다.
  • To 슈트 설정 페이지를 포함하려면, 부모 계층에서 SuiteSetUp 페이지를 찾아 Include문과 페이지 경로를 추가한다.
  • To 부모 계층을 검색하려면…

Switch문

스위치 문을 다형성 객체를 생성하는 코드 안에서 허용하고 상속관계로 숨기고 다른 코드에 노출하지 않는 방법이 있다.

서술적인 이름을 사용하라

이름이 길어도 괜찮고 서술적인 이름이 짧고 어려운 이름보다 좋다. 함수 이름을 정할때 여러 단어가 쉽게 읽히는 명명법을 사용하는것이 좋다. 여러 단어를 사용해 함수 기능을 표현하라

모듈 내에서 함수 이름은 같은 문구,명사,동사를 사용한다.

함수 인수

함수에서 이상적인 인수 개수는 0개이다. 다음은 1개이고 다음은2개이다. 최선은 입력 인수가 없는 경우 ex: IncludeSetupPageInfo(new PageContent) → includeSetupPage()

단항형식

  1. 인수에 질문을 던지는 경우
  2. 인수를 뭔가로 변환해 결과를 반환하는 경우
  3. 단항 함수 형식의 이벤트 단 플래그 인수는 추하다. 함수에 부울 값을 넘기는 관례는 차라리 함수를 분리하는 편이 좋다.

이항함수

인수가 2개인 함수는 1개인 함수보다 이해하기 어렵다. 프로그램을 짜다보면 불가피한 경우도 생기지만 그만큼 위험이 따른다.

삼항함수

인수가 3개인 함수는 이해하기 어렵다. 인수가 3개 이상인 함수는 피하는 편이 좋다.

동사와 키워드

단항 함수는 함수와 인수가 동사/명사 쌍을 이뤄야 한다. 함수 이름에 키워드를 추가하는 편도 좋다

부수 효과를 일으키지 마라

함수에서 한 가지를 하겠다고 약속하고선 남몰래 다른 짓을 하지 말아라!

명령과 조회를 분리하라!

함수는 뭔가를 수행하거나 뭔가에 답하거나 둘중 하나만 해야한다. 둘 다 하면 안 된다. 객체 상태를 변경하거나 아니면 객체 정보를 반환하거나 둘 중 하나다.

Try/Catch 블록은 한 함수에서 별도로 처리

코드 구조에 혼란을 일으키며, 정상 동작과 오류 처리 동작을 뒤섞는다.

반복하지 마라

중복은 소트트웨어에서 모든 악의 근원이다. 많은 원칙과 기법이 중복을 없애거나 제어할 목적으로 나왔다.

다음장으로 4장