한 메서드에 오직 한 단계의 들여쓰기(indent)만 한다.

else 예약어를 쓰지 않는다.

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

자바에서는 원시 데이터 유형(primitive)을 객체로 래핑(wrapper class)하는 작업이 자동으로 이루어집니다.

  • 원시 데이터 유형을 래퍼 클래스로 자동 변환 | 오토박싱
    int primitiveInt = 42;
    Integer wrappedInt = primitiveInt;
    
  • 래퍼 클래스를 원시 데이터 유형으로 자동 변환 | 오토언박싱
    Integer wrappedInt = 42;
    int primitiveInt = wrappedInt; 
    

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

    메서드 체이닝을 남발하는 경우 한 화면을 벗어나기 때문에 점을 찍을때 줄바꿈을 쳐주거나 분리해주는게 좋습니다.

  • 나쁜 예
    String result = someObject.getSomething().doSomething().calculateSomething();
    
  • 분리한 예
    SomeType intermediateResult = someObject.getSomething();
    intermediateResult = intermediateResult.doSomething();
    String result = intermediateResult.calculateSomething();
    
  • 줄바꿈 예
    String result = someObject.getSomething()
    .doSomething()
    .calculateSomething();
    

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

회사에서 많이 본 유형입니다. TB_USER, SEQ_NUM, CD 등등 저는 혼자서만 이해하는 코드는 배포되면 안된다고 생각합니다. 이전 회사에선 이러한 축약어 때문에 축약어 사전을 만들었습니다.

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

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

일급 컬렉션을 쓴다.

일급 컬렉션이란?

  • 컬렉션을 일급 객체로 다룹니다. ( 컬렉션을 클래스로 한번 감싸서 객체로 제공한다고 생각하면 될 것 같습니다. )
  • 컬렉션을 캡슐화
    • 컬렉션을 멤버 변수로 가지고, 외부에서 접근하지 못하게 컬렉션을 캡슐화합니다.
  • 컬렉션에 관련된 동작을 함께 제공
  • 읽기 전용 뷰를 제공
    • 아래처럼 읽기 전용 뷰를 제공해야 합니다.
      public List<Product> getProducts() {
          return Collections.unmodifiableList(products);
      }
      

      일급 객체(First-Class Object)란?

  • 변수나 데이터 구조에 할당 가능
  • 함수의 매개변수로 전달 가능
  • 함수의 반환값으로 사용 가능
  • 동적 생성 가능

    게터/세터를 쓰지 않는다.

댓글남기기