객체지향 생활 체조 - 규칙 1: 메서드당 들여쓰기 한 번
- 프로그래밍/객체지향 생활 체조 원칙
- 2021. 3. 28.
Photo by Nick Fewings on Unsplash
한 메서드에 오직 한 단계의 들여쓰기만 한다.
이 규칙이 가지는 의미
이 규칙은 언뜻 보기에는 들여쓰기(indent)에 초점을 두고 있는 것처럼 보입니다. 실제로 내용 자체도 "들여쓰기"의 단계를 제한한다고 정의하고 있습니다. 그렇지만 이 규칙을 적용하다 보면 자연스럽게 만나는 핵심은 "하나의 단락(block)이 한 가지의 일"을 하려고 노력했느냐입니다. 반대로 말하면 들여쓰기가 한번 이상 적용된 단락 즉 중첩된 제어 구조가 있다면 이 단락은 한 가지 이상의 일을 하고 있음을 증명하는 셈이 되어 버립니다. 그렇기 때문에 "메서드당 들여쓰기 한 번"이라는 규칙은 메서드가 가지는 구문 중 한 단락에서는 한 가지의 일만 수행하게 만듦으로써 메서드의 내부의 구조를 평이하게 만드는 효과를 만들어냅니다. 실제로 이 규칙을 적용한 코드들은 이전에 작성된 코드보다 구조 자체가 평이하게 되어 있어 읽기도 쉽고 문제가 발생해도 어디서 문제가 발생했는지 찾기가 쉬워집니다.
예제 코드
적용 전
public class Table {
...
public String createView() {
StringBuffer buffer = new StringBuffer();
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 10; j++) {
buffer.append(data[i][j]);
}
buffer.append("\n");
}
return buffer.toString();
}
}
적용 후
public class Table {
...
public String createView() {
StringBuffer buffer = new StringBuffer();
addRows(buffer);
return buffer.toString();
}
private void addRows(StringBuffer buffer) {
for (int row = 0; row < 10; row++) {
addColumns(buffer, row);
}
}
private void addColumns(StringBuffer buffer, int row) {
for (int column = 0; column < 10; column++) {
buffer.append(data[row][column]);
}
buffer.append("\n");
}
}
정리하기
예제 코드에 규칙 적용 전과 후를 보면 "메서드당 들여쓰기 한 번" 규칙을 적용함으로써 중첩 제어문을 메서드로 분리하게 됩니다. 결과적으로 바뀌게 된 메서드 구조는 한 단락은 하나의 일만 하고 동시에 구조가 평이해졌다는 사실을 알 수 있습니다. 또 메서드로 분리되다 보니 메서드 이름을 통해 코드를 이해하기도 전보다 쉬워졌습니다.
소프트웍스 앤솔러지 - 객체지향 생활 체조 학습하기
반응형
'프로그래밍 > 객체지향 생활 체조 원칙' 카테고리의 다른 글
객체지향 생활 체조 - 규칙 5: 축약 금지 (6) | 2021.04.16 |
---|---|
객체지향 생활 체조 - 규칙 4: 한 줄에 한 점만 사용 (16) | 2021.04.10 |
객체지향 생활 체조 - 규칙 3: 원시값과 문자열의 포장 (6) | 2021.04.08 |
객체지향 생활 체조 - 규칙 2: else 예약어 금지 (11) | 2021.03.30 |
소프트웍스 앤솔러지 - 객체지향 생활 체조 학습하기 (1) | 2021.03.27 |