본문 바로가기
study/Java

클린코드(Clean code) 6장 - 객체와 자료 구조

by 고기만두(개발자) 2022. 9. 11. 12:06
728x90
반응형

1. 자료구조 vs 객체 : 상황에 맞게 선택하기

절차적인 코드는 새로운 자료구조를 추가하기 어렵고 모든 함수를 다 고쳐야 한다.

자료구조를 사용하는 절차적 코드는 기본 자료구조를 변경하지 않으면서, 새로 함수를 추가하기 쉽다.

 

객체지향 코드는 기존 함수를 변경하지 않으면서 새로운 클래스를 추가하기 쉽다.

하지만 새로운 함수를 추가하려면, 모든 클래스를 고쳐야 한다.

 

=>

새로운 자료 타입 추가에 대한 유연성이 필요할때는 객체,

새로운 동작에 대한 유연성이 필요하면 자료구조와 절차적인 코드를 사용하자.

 

 

2. 디미터 법칙

디미터 법칙

클래스 C의 메서드 f는 이런 객체의 메서드만 호출해야 한다

-클래스 C

-메서드 f 자신이 생성한 객체

-메서드 f 자신의 인수로 넘어온 객체

-클래스 C의 인스턴스 변수에 저장된 객체

 

내 친구의 친구라도 사실상 남이나 마찬가지로 취급한다.

*휴리스틱 : 경험적으로 만들어낸 법칙. 경험에 기반하여 문제를 해결하고, 의사결정을 단순화하기 위한 법칙들

기차 충돌

get.get.을 남발하면 기차 충돌 : 디미터 법칙 위배

그럴 거면 자료구조를 사용해서 값을 가져오자.

 

3. DTO (Data transfer object) = 자료구조

다른 계층 간 데이터를 교환할 때 사용

로직 없이 필드만 갖고, getter/setter 를 갖기도 함.

 

*java beans : 데이터 표현이 목적인 자바객체. 멤버 변수는 private 속성, getter/setter를 가짐.

 

4. Active record = 자료구조

database row를 객체에 맵핑하는 패턴.

database에 대한 접근도 포함.

cf ) Data mapper : row를 담는 객체와 database에 접근하는 객체를 분리

 

1/3 왔는데, 현재까지 중에 제일 어려운 챕터

앞으로 더 어려워질 것 같지만 ...

728x90
반응형

댓글