ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 객체지향 생활체조 9가지
    Etc 2020. 12. 18. 12:06

    1. 한 메서드에서의 indent는 1로 제한한다.

    - 한 메서드에서 2중 for문 같이 반복문과 제어문을 혼용해서 쓰는 것 보다는, 메서드를 분리한다.

    - 메서드를 분리했을 경우 하나의 메서드가 맡고있는 일이 더욱 세분화되고 리팩토링 시 용이하다.

     

    2. else 예약어를 지양한다.

    - else 예약어가 많아지면 indent도 증가하고 가독성도 좋지 않다.

    - guard clause, ealry return을 이용하면 else 예약어의 사용을 줄일 수 있다.

     

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

    - class도, enum도 가능하다.

    - 사실 프리코스를 할 때는 이 부분에 대해서 명확하게 이해를 하지 못 했는데, 이제 알 것 같다.

    - 특정 메서드에서 매개변수로 String형 변수를 받아왔을 때, 이 변수가 어떠한 특성을 가지고 있는지 확인하는 방법은 변수명밖에 없다.

    - 해당 변수를 Car 객체로 포장해서 넘겨받는다면 인자의 성질에 대해서도 쉽게 파악 가능하다.

     

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

    - buf.append(current.next.substring(0,10)) 이런 식의 사용을 지양한다.

    - 메서드에서 직접 값을 꺼내오기보다는 메시지를 보내서 값or상태를 받아온다.

     

    5. 축약은 하지 않는다.

    - 모든 클래스, 메서드, 변수명에서는 축약은 하지 않으며, 한두단어로 된 이름을 명명하도록 노력한다.

    - Order클래스의 바람직한 메서드명: shipOrder(X) / ship(O)

    - 호출 시 Order.ship()의 형태로 호출되어서, 충분히 메서드 의의를 파악할 수 있기 때문이다.

     

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

    - 클래스는 50줄 이하, 패키지는 10파일 이하를 유지한다.

    - 50줄 이상의 클래스는 한 가지 일 이상을 할 가능성이 높다. 따라서 클래스를 분리하도록 노력한다.

    - 클래스를 작게, 패키지를 제한할수록 패키지가 하나의 목적을 가진 연관 클래스의 집합에 가까워진다.

     

    7. 2개 이상의 인스턴스 변수를 가진 클래스 사용 금지

     

    8. 일급 콜렉션 사용

    - 콜렉션을 가진 클래스는 다른 멤버 변수를 가져서는 안된다.

     

    9. 게터/세터/속성 사용 금지

    - 캡슐화 위반 가능성

     

     

    이러한 규칙들은 객체지향 프로그래밍의 다음 목표를 이루기 위해 시행된다.

    첫 번째, 데이터의 캡슐화를 가시화하고 실현하기

    두 번째, 다형성의 적절한 사용 유도

    세 번째, 간결하고 직설적인 명명 표준 장려

    마지막, 코드나 아이디어의 중복이 없도록 코드 설계하기

     

     

    해당 글은 아래의 자료를 참고하여 작성했습니다.

    developerfarm.wordpress.com/2012/02/03/object_calisthenics_summary/

Designed by Tistory.