본문 바로가기

개발 개념

객체지향 생활 체조 원칙 9가지

1. 한 메서드에 오직 한 단계의 들여 쓰기

 

  • 설명: 메서드 내에서 중첩된 로직(조건문, 반복문 등)을 피하고, 단순하게 작성한다.
  • 목적: 메서드가 너무 복잡해지는 것을 방지하고 가독성을 높인다.
  • 실천: 중첩된 로직은 메서드로 분리한다.

2. else 예약어를 쓰지 않는다.

 

  • 설명: 조건문에서 else를 사용하지 말고, 조건이 맞지 않는 경우 바로 반환(return)하거나 예외를 던진다.
  • 목적: 코드의 흐름을 단순화하고 읽기 쉽도록 한다.
// 나쁜 예
if (condition) {
	doSomething();
} else {
	doSomethingElse();
}

// 좋은 예
if (condition) {
	doSomething();
	return;
}
doSomethingElse();

 

 

 

3. 모든 원시값과 문자열을 포장한다.

 

  • 설명: 원시값(primitive type)과 문자열은 의미를 명확히 하기 위해 객체로 포장한다.
  • 목적: 의미를 더하고, 값의 유효성을 검증하거나 관련된 로직을 추가할 수 있다.
public class ProductPrice {
    private final int price;

    public ProductPrice(int price) {
        if (price < 0) {
            throw new IllegalArgumentException("값은 0 이상이어야 합니다.");
        }
        this.price = price;
    }
}

 

 

4. 한 줄에 점을 하나만 찍는다.

 

  • 설명: 메서드 체이닝이나 연속적으로 객체에 접근하는 코드를 피한다.
  • 목적: 객체의 내부 구조에 대한 의존성을 줄이고 캡슐화를 유지한다.
// 나쁜 예
order.getCustomer().getAddress().getCity();

// 좋은 예
Customer customer = order.getCustomer();
Address address = customer.getAddress();
String city = address.getCity();

 

 

5. 줄여 쓰지 않는다 (축약 금지).

 

  • 설명: 변수명, 메서드명 등을 줄여 쓰지 않고 의미를 명확히 작성한다.
  • 목적: 가독성을 높이고 코드의 의도를 명확히 한다.
// 나쁜 예
int cnt;
String addr;

// 좋은 예
int count;
String address;

 

6. 모든 엔티티를 작게 유지한다.

  • 설명: 클래스와 메서드는 하나의 책임만 가지며 작게 유지해야 한다.
  • 목적: 단일 책임 원칙(SRP)을 따르고, 코드가 이해하기 쉬워지며, 변경에 유연하게 대응할 수 있다.

7. 2개 이상의 인스턴스 변수를 가진 클래스를 쓰지 않는다.

  • 설명: 클래스는 2개 이하의 필드를 가지도록 설계하며, 더 많은 필드는 객체로 분리한다.
  • 목적: 응집도를 높이고, 더 작은 단위의 객체로 분리하여 책임을 명확히 한다.

8. 3개 이상의 인자를 가진 생성자를 쓰지 않는다.

  • 설명: 생성자는 3개 이상의 인자를 사용하지 말고, 객체나 빌더 패턴을 활용하여 이를 해결한다.
  • 목적: 가독성과 유지보수성을 높이고, 코드의 의도를 더 명확히 한다.
// 나쁜 예
public User(String name, int age, String address, String email) { ... }

// 좋은 예
public class User {
    private Name name;
    private Age age;
    private Address address;
    private Email email;
}

 

9. 1급 컬렉션을 쓴다.

  • 설명: 컬렉션(리스트, 맵 등)을 래핑한 클래스를 만들어, 컬렉션과 관련된 로직을 해당 클래스 안에서 처리한다.
  • 목적: 컬렉션의 캡슐화를 유지하고, 비즈니스 로직을 분산시키지 않는다.

 

 

 

출처: https://jamie95.tistory.com/99

'개발 개념' 카테고리의 다른 글

단위 테스트와 테스트 더블  (0) 2025.02.13
클린아키텍처  (0) 2025.02.11
1급 컬렉션  (0) 2025.02.11
VO(Value Object)  (0) 2025.02.11
객체지향  (3) 2025.02.07