i-no.log
로그인
i-no.log
로그인
[클린 코드 읽고 정리해두고 다시 보기] 객체와 자료 구조
inho ha
·
2024년 9월 20일
팔로우
1
클린 코드
1
클린 코드 읽고 정리해두고 다시 보기
목록 보기
5/16
자료 추상화
클래스의 변수는 get, set 으로 그대로 노출시키지 마라
세세하게 공개하기보다는 추상적인 개념으로 표현하라
변수 하나하나 get 으로 가져와서 연산하여 사용하지 말고, 클래스에서 연산해서 필요한 값을 리턴해줘라
자료/객체 비대칭
절차적인 코드는 기존 자료 구조를 변경하지 않으면서 새 함수를 추가하기 쉽다. 새로운 자료 구조를 추가하기는 이를 위해 모든 함수를 고쳐야해서 어렵다.
객체 지향 코드는 기존 함수를 변경하지 않으면서 새 클래스를 추가하기 쉽다. 새로운 함수를 추가하기는 이를 위해 모든 클래스를 고쳐야해서 어렵다.
디미터 법칙
클래스의 메서드는 메서드가 생성한 객체, 인수로 넘어온 객체, 클래스, 클래스 인스턴스 변수에 저장된 객체의 메서드만 호출해야 한다.
디미터 법칙 위반 예시 : final String outputDir = ctxt.getOptions().getScratchDir().getAbsolutePath();
디미터 법칙 준수 예시 : final String outputDir = ctxt.options.scratchDir.absolutePath;
객체와 달리 자료 구조는 내부 구조를 노출하므로 디미터 법칙이 적용되지 않는다.
객체는 메서드 체이닝을 통해 가져오기 보다, 객체의 메서드로 바로 요구하고, 메서드 내부에서 알아서 원하는 걸 찾아서 리턴하도록 해라
DTO
DTO는 자료 구조로 취급하고, 비즈니스 규칙을 담으면서 내부 자료를 숨기는 객체는 따로 생성하라.
결론
객체는 동작을 공개하고 자료를 숨긴다.
그래서 기존 동작을 변경하지 않으면서 새 객체 타입을 추가하기는 쉽지만, 기존 객체에 새 동작을 추가하기는 어렵다.
자료 구조는 별다른 동작 없이 자료를 노출한다.
그래서 기존 자료 구조에 새 동작을 추가하기는 쉬우나, 기존 함수에 새 자료 구조를 추가하기는 어렵다.
상황에 따라 적절하게 사용하는 것이 중요하다.
inho ha
inho ha / ian(swatchon) / iha(42seoul)
팔로우
이전 포스트
[클린 코드 읽고 정리해두고 다시 보기] 형식 맞추기
다음 포스트
[클린 코드 읽고 정리해두고 다시 보기] 오류 처리
0개의 댓글
댓글 작성