Community

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

← Go back
TIL - Assignment #14(~ 10장. 클래스)
#clean_code
2년 전
1,345
1

오늘 TIL 3줄 요약

  • 클래스는 작아야 한다

  • 관심사 분리!

  • 새 기능을 수정하거나 기존 기능을 변경할 때 건드릴 코드가 최소인 시스템 구조가 바람직하다.

TIL (Today I Learned) 날짜

2022.03.08(화) ~ 2022.03.09(수)

오늘 읽은 범위

  • 10장. 클래스

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

  • 캡슐화를 풀어주는 결정은 언제나 최후의 수단이다.(172p)

  • 클래스는 작아야한다.(172p)

  • 책임, 즉 변경할 이유를 파악하려 애쓰다 보면 코드를 추상화하기도 쉬워진다. 더 좋은 추상화가 더 쉽게 떠오른다.(176p)

  • 소프트웨어를 돌아가게 만드는 활동과 소프트웨어를 깨끗하게 만드는 활동은 완전히 별개다.(176p)

  • 관심사를 분리하는 작업은 프로그램만이 아니라 프로그래밍 활동에서도 마찬가지로 중요하다.(176p)

  • 새 기능을 수정하거나 기존 기능을 변경할 때 건드릴 코드가 최소인 시스템 구조가 바람직하다. 이상적인 시스템이라면 새 기능을 추가할 때 시스템을 확장할 뿐 기존 코드를 변경하지는 않는다.(188p)

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

  • 이번장은 객체지향 프로그래밍의 5원칙인 SOLID를 이야기 형식으로 풀어 쓴 챕터다. 사실 객체지향 원칙에 대해서 외우기만 했었지 실제 예제를 들어서 본 적은 처음이다. 예제를 보고도 100%이해되지 않은 부분이 많았지만, 이상적인 객체지향 설계에 대해서 엿볼 수 있었다.

  • 사실 객체지향 프로그래밍은 많이 쓰이는 패러다임이면서 제대로 쓰는 사람도 많이 없는 패러다임이라고 생각한다. 대부분의 코드를 보면 객체지향'적'인 프로그래밍이었지 제대로 된 객체지향 프로그래밍은 본 기억이 거의 없는 것 같다. 때문에 이 챕터는 두고두고 곱씹어봐야 할 챕터이다.

  • 사실 클래스를 이렇게 잘게 쪼갠다는 개념 자체가 대부분의 사람들에게 익숙하지 않은 개념일 듯 싶은데 깨끗한 코드를 만들기 위해 클래스를 잘게 쪼개기 위해서는 많은 연습이 필요할 것 같다.

  • 프로그램 개발 프로세스가 대부분 비슷할 것이라고 생각하는데 보통 돌아가는 소프트웨어를 만들기 위해 코드에 신경을 쓰기 보다는 기능 동작에 집중하는데, 이때 쌓인 기술부채를 얼마나 갚냐에 따라서 '깨끗하고 체계적인 소프트웨어'가 될 수 있다.

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

  • 객체지향 프로그래밍의 5원칙(SOLID)

    • S(SRP, Single Responsibility Principle): 한 클래스는 하나의 책임만 가져야 한다.

    • O(OCP: Open/Closed Principle): 확장에는 열려있으나, 변경에는 닫혀있어야 한다.

    • L(LSP: Liskov's Substitution Principle): 프로그램의 객체는 프로그램의 정확성을 깨뜨리지 않으면서 하위 타입의 인스턴스로 바꿀 수 있어야 한다.

    • I(ISP: Interface Segregation Principle): 특정 클라이언트를 위한 인터페이스 여러 개가 범용 인터페이스 하나보다 낫다.

    • D(DIP: Dependency Inversion Principle): 구체화에 의존하지 않고 추상화에 의존해야 한다.

오늘 읽은 다른사람의 TIL

1 comment