IT 관련 책 정리 및 후기/Clean Code

[Clean Code] 6장. 객체와 자료구조

JUN0126 2022. 8. 30. 22:47

변수를 private으로 선언 하더라도 각 값마다 조회 함수와 설정 함수 (getter, setter) 함수를 제공 한다면 구현을 외부로 노출하는 셈이 되므로 변수에 대한 정보를 함수로 표현한다고 해서 구현을 감추는것은 되지 않는다.

그러하여  추상 인터페이스를 제공해 사용자가 구현을 모른 채 자료의 핵심을 조작할 수 있어야 진정한 의미의 클래스이다.

자료를 세세하게 공개하기 보다는 추상적인 개념으로 표현하는 편이 좋다

 

새로운 함수보다 새로운 자료 타입이 필요한 경우는 클래스와 객체 지향 기법이 적합하며, 새로운 자료타입이 아니라 새로운 함수가 필요한 경우는 절차적인 코드와 자료구조가 좀 더 적합하다.

 

디미터 법칙

모듈은 자신이 조작하는 객체의 속 사정을 몰라야 한다는 법칙 즉, 객체는 조회 함수로 내부 구조를 공개하면 안된다는 의미이다.

필자가 이해하기 쉽도록 생각하는 것은 메소드 체이닝을 1단계에서만 끝낸다는 것이다 

EX) ctx.getOptions().getScratchDir().getAbsolutePath()

=> Options opts = ctx.getOptions 

      File file = opts.getScratchDri()

      string outputDir = scratchDir.getAbsolutePath()

 

자료 전달 객체 (DTO : Data Transfer Object)

데이터를 전달 기능만 하도록 공개 변수만 있고 함수가 없는 클래스인 자료 전달 객체가 대표적인 자료 구조체이다.

이러한 자료 전달 객체에 단순 변수의 반환이 아닌 find나 save 같은 탐색 함수를 제공하는 경우가 있는데 이와 같은 경우는 객체가 아닌 자료구조로 취급하여 바즈니스 규칙을 담으면서 내부 자료를 숨기는 객체는 따로 생성하도록 하여야 한다.

 

객체와 자료구조의 차이를 명확하게 알 필요가 있다~

 

결론

시스템을 구현할 떄, 새로운 자료 타입을 추가하는 유연성이 필요하면 객체가 적합하며, 새로운 동작을 추가하는 유연성이 필요하다면 자료구조와 절차적인 코드가 더 적합하다. 객체지향이라하여 무조건적인 객체 생성보다 위와 같은 사실을 인지하여 코드를 작성하는 유연성이 필요하다.

 

 

 

 

 

해당 내용은 Clean Code를 읽고 정리한 내용입니다.

주관적인 생각과 내용을 같이 적시하였으니 적확한 정보는 해당 책을 통하여 같이 확인 해주시길 바랍니다.

http://www.kyobobook.co.kr/product/detailViewKor.laf?mallGb=KOR&ejkGb=KOR&barcode=9788966260959

 

Clean Code(클린 코드) - 교보문고

애자일 소프트웨어 장인 정신 | 나쁜 코드도 돌아는 간다. 하지만 코드가 깨끗하지 못하면 개발 조직은 기어간다. 매년 지저분한 코드로 수많은 시간과 상당한 자원이 낭비된다. 그래야 할 이유

www.kyobobook.co.kr

'IT 관련 책 정리 및 후기 > Clean Code' 카테고리의 다른 글

[Clean Code] 8장 경계  (0) 2022.09.19
[Clean Code] 7장. 오류 처리  (0) 2022.09.19
[Clean Code] 5장. 형식 맞추기  (0) 2022.08.28
[Clean Code] 4장. 주석  (2) 2022.08.21
[Clean Code] 3장. 함수  (0) 2022.08.21