Liskov Substitution Principle, 양육을 위한 모델

발행: (2025년 12월 18일 오전 09:03 GMT+9)
5 min read
원문: Dev.to

Source: Dev.to

Cover image for The Liskov Substitution Principle, A Model for Parenting

아마도 저만 그런가 싶지만, 대부분의 소프트웨어 원칙은 실제 생활에 이미 존재한다는 것을 깨달을 때까지 추상적으로 느껴집니다 🌱

SOLID 원칙을 공부하면서 가장 명확한 예시 중 하나가 **리코프 치환 원칙 (LSP)**이라는 것을 알게 되었습니다 — 객체‑지향 설계의 핵심 개념 — 이것이 양육과 가족 기대와 놀라울 정도로 잘 맞아떨어집니다 👨‍👩‍👧‍👦

🔍 LSP가 말하는 내용 (간단히)

소프트웨어에서 LSP는 다음과 같이 말합니다:

If a class B is a subtype of class A, objects of type A should be replaceable with objects of type B without breaking the behavior expected by the client.

쉽게 말하면:

높은 수준에서 약속을 하면, 모든 구체적인 경우가 그 약속을 지킬 수 있어야 합니다 🤝

이제 바꿔보면:

  • class → child 👶
  • client → family 🏠

갑자기 원칙이 매우 인간적으로 보입니다.

👪 부모, 약속, 그리고 추상화

  • 소프트웨어에서는 기본 클래스가 기대치를 정의합니다.
  • 가족에서는 부모가 규칙과 책임을 정의합니다.

문제는 부모가 이렇게 말할 때 발생합니다:

“우리 모든 자녀는 X를 해야 한다.”

…but not all children are actually capable of doing X.

그럴 때 문제는 아이가 아니라 기대치에 있습니다. ⚠️

이는 기본 클래스가 모든 하위 클래스가 안전하게 지원할 수 없는 동작을 정의할 때 소프트웨어에서 일어나는 일과 정확히 같습니다.

🤥 부모가 “거짓말”할 때

프로그래밍에서는 추상화가 거짓말하고 있다고 말합니다. 이는 보편적으로 유효하지 않은 동작을 약속할 때입니다.

가정에서는 다음과 같은 형태로 나타납니다:

  • 모든 아이가 같은 방식으로 성공하기를 기대한다 🎯
  • 연령이나 능력에 관계없이 같은 책임을 부여한다 🧱
  • 아이에게 맞지 않는 기대 때문에 처벌한다 🚫

소프트웨어에서는 결과가 깨진 동작이 됩니다.
가정에서는 좌절, 원망, 그리고 끊임없는 갈등이 발생합니다 💥

🧠 공유된 교훈

소프트웨어를 설계하든 가족을 키우든:

누군가가 계속해서 “나는 할 수 없어”라고 말해야 한다면, 그 약속이 잘못됐을 가능성이 높다.

LSP는 개발자에게 아래가 아니라 위를 바라보라고 가르칩니다 — 구현을 비난하기보다 계약을 고치라는 것이죠 🔄

🌟 최종 생각

강력한 시스템 — 기술이든 인간이든 — 은 명확한 기대, 정직한 약속, 그리고 차이에 대한 존중 위에 세워집니다.

  • 추상화가 진실될 때, 치환은 안전해집니다.
  • 기대가 공정할 때, 관계는 건강해집니다 💚
Back to Blog

관련 글

더 보기 »

SOLID 원칙 + 디자인 패턴

!Forem 로고 https://media2.dev.to/dynamic/image/width=65,height=,fit=scale-down,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%...