Community

개발자 99% 커뮤니티에서 수다 떨어요!

← Go back
TIL 6장. 객체와 자료구조
#clean_code
2년 전
634


TIL (Today I Learned)

// 2022.03.01

오늘 읽은 범위

// 6장 객체와 자료구조

책에서 기억하고 싶은 내용을 써보세요.

  • (자료 구조를 사용하는)절차적인 코드는 기존 자료 구조를 변경하지 않으면서 새 함수를 추가하기 쉽다. 반면, 객체 지향 코드는 기존 함수를 변경하지 않으면서 새 클래스를 추가하기 쉽다. (p. 122)

  • 절차적인 코드는 새로운 자료 구조를 추가하기 어렵다. 그러려면 모든 함수를 고쳐야 한다. 객체 지향 코드는 새로운 함수를 추가하기 어렵다. 그러려면 모든 클래스를 고쳐야 한다. (p.122)

  • 객체 지향 코드에서 어려운 변경은 절차적인 코드에서 쉬우며, 절차적인 코드에서 어려운 변경은 객체 지향 코드에서 쉽다! (p.122)

  • 흔히 위와 같은 코드를 기차 충돌이라 부른다. 여러 객차가 한 줄로 이어진 기차처럼 보이기 때문이다. 일반적으로 조잡하다 여겨지는 방식이므로 피하는 편이 좋다. (p.123)

  • ctx 가 객체라면 뭔가를 하라고 말해야지 속을 드러내라고 말하면 안 된다. (p.125)

  • 불행히도 활성 레코드에 비즈니스 규칙 메서드를 추가해 이런 자료 구조를 객체로 취급하는 개발자가 흔하다. 하지만 이는 바람직하지 않다. 그러면 자료 구조도 아니고 객체도 아닌 잡종 구조가 나오기 때문이다. 해결책은 당연하다. 활성 레코드는 자료 구조로 취급한다. 비즈니스 규칙을 담으면서 내부 자료를 숨기는 객체는 따로 생성한다. (p.127)

  • 객체는 동작을 공개하고 자료를 숨긴다. 그래서 기존 동작을 변경하지 않으면서 새 객체 타입을 추가하기는 쉬운 반면, 기존 객체에 새 동작을 추가하기는 어렵다. 자료 구조는 별다른 동작 없이 자료를 노출한다. 그래서 기존 자료 구조에 새 동작을 추가하기는 쉬우나, 기존 함수에 새 자료 구조를 추가하기는 어렵다. (p.127)

  • 시스템을 구현할때, 새로운 자료 타입을 추가하는 유연성이 필요하면 객체가 더 적합하다. 다른 경우로 새로운 동작을 추가하는 유연성이 필요하면 자료 구조와 절차적인 코드가 더 적합하다. 우수한 소프트웨어 개발자는 편견없이 이 사실을 이해해 직면한 문제에 최적인 해결책을 선택한다. (p.128)

오늘 읽은 소감은? 떠오르는 생각을 가볍게 적어보세요

  • 내가 직접 작성하고 있는 코드가 객체 지향인지 절차 지향인지 솔직히 잘 몰랐다. 그리고 이 챕터를 읽고 가만히 생각해보면서 내가 작성한 코드에 대해 생각해봤다. 그리고 그 코드가 잡종 코드가 아닌가에 대해서도 생각을 많이 해봤다. 빈 구조인지에 대해서도 생각해봤다. (실제로 빈 구조를 사용하기도 했다 ㅠㅠ )

  • 가장 어려운건 적절한 판단력인것같다. 설계를 할때 어떤 코드로 구현해야할지..

궁금한 내용이 있거나, 잘 이해되지 않는 내용이 있다면 적어보세요.