728x90
자료구조 VS 객체
자료구조와 객체 사용은 상황에 맞게 선택해서 사용하면 됨
자료구조 | 객체 |
데이터 그 자체 | 비즈니스 로직과 관련 |
자료를 공개함 | 자료를 숨기고, 추상화, 자료를 다루는 함수만 공개 |
변수 사이에 조회 함수와 설정 함수로 변수를 다룬다고 해도 객체가 되는 것은 아님 | 추상 인터페이스를 제공해 사용자가 구현을 모른 채 자료의 핵심을 조작할 수 있음 |
- 자료구조를 사용하는 절차적인 코드는 기본 자료구조를 변경하지 않으면서 새 함수를 추가하기 쉬움
- 절차적인 코드는 새로운 자료구조를 추가하기 어려움, 모든 함수를 고쳐야함
- 객체지향 코드는 기존 함수를 변경하지 않으면서, 새 클래스를 추가하기 쉬움
- 객체지향 코드는 새로운 함수를 추가하기 어려움, 추가하려면 모든 클래스를 고쳐야함 '
객체 - 디미터의 법칙
모듈은 자신이 조작하는 객체의 속사정을 몰라야 한다는 법칙
- 휴리스틱 : 경험에 기반하여 문제를 해결하기 위해 발견한 방법, 의사결정을 단순화하기 위한 법칙
- 기차충돌 : 디미터의 법칙에 어긋나는 상황 (ex. object.getChild().getContent().getItem().getTitle())
- 디미터의 법칙은 오직 하나의 도트만을 사용하라는 말로 요약됨 (Stream은 위반한 케이스가 아님, 캡슐화는 그대로 유지되므로 문제가 없음, 객체 내부 구현이 노출되지 않는 것이 디미터의 법칙을 준수한 코드)
- 디미터의 법칙은 자기자신, 메서드로 넘어온인자, 자신이 생성한 객체, 직접포함하고 있는객체만 메서드를 호출
- 객체의 협력경로를 제한하라는 의미
DTO (Data Transfer Object) = 자료구조
다른 계층 간 데이터를 교환할 때 사용
- 로직이 없음
- Getter / Setter를 가짐
- 멤버변수는 private
- 실무에서 많이 사용함
'CLEANCODE' 카테고리의 다른 글
[CLEANCODE] 경계 (0) | 2021.10.27 |
---|---|
[CLEANCODE] 형식맞추기 (0) | 2021.10.24 |
[CLEANCODE] 주석 (0) | 2021.10.23 |
[CLEANCODE] 함수 (0) | 2021.10.23 |
[CLEANCODE] 의미있는 이름 (0) | 2021.10.20 |