-
객체지향 생활체조 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/
'Etc' 카테고리의 다른 글
VSCode에서 jQuery 자동완성 기능 추가하기 (2) 2021.03.11 발머의 피크 이론(Baller's Peak Theory) (1) 2021.02.05 생활코딩 머신러닝 야학 후기 (0) 2020.08.27 2020 삼성전자 SW 역량테스트(오전) 후기 (0) 2020.06.10 JSON이란? JSON 문법과 예제/XML과 차이점 (0) 2020.02.24