본문 바로가기

스터디16

11장 - 합성과 유연한 설계 개요 이번 장에서는 상속의 문제점을 해결하기 위한 방법에 대해서 소개합니다. 상속의 문제들을 어떻게 해결할 수 있을까? 합성(Composition)을 사용하면 상속의 문제들을 해결할 수 있습니다. 합성(Composition)은 기존의 객체를 재사용하기 위해 그 객체를 포함하는 새로운 객체를 생성하는 디자인 패턴입니다. 다음 간단한 예제들을 통해 어떻게 문제를 해결하는지 알아보겠습니다. 상속을 사용한 예제 class Car: def __init__(self, fuel_efficiency): self.fuel_efficiency = fuel_efficiency # 초기 연료 효율성 설정 def fuel_needed(self, distance): return distance / self.fuel_efficie.. 2023. 8. 28.
10장 - 상속과 코드 재사용 개요 이번 장에서는 객체지향에서 중복 코드를 제거하는 대표적인 기법인 상속에 대해 설명합니다. 왜 중복 코드를 제거해야 할까? 중복 코드가 가지는 가장 큰 문제는 코드를 수정하는 데 필요한 노력을 몇 배로 증가시킵니다. 프로세스 예시) 어떤 코드가 중복인지 확인 → 찾았다면 찾아낸 모든 코드를 일관되게 수정 → 테스트하여 동일한 결과가 출력되는지 확인 위 프로세스의 노력이 늘어날수록 코드의 변경이 힘들게 됩니다. 따라서 이러한 이슈 때문에 중복 코드를 제거해야 합니다. 중복 여부를 판단하는 기준은 변경입니다. 요구사항이 변경됐을 때 두 코드를 함께 수정해야 한다면 이 코드는 중복이며, 함께 수정할 필요가 없다면 중복이 아닙니다. 어떻게 중복 코드를 제거할 수 있을까? 여러 가지 방법이 있겠지만 이 책에서.. 2023. 8. 6.
9장 - 유연한 설계 개요 이번 장에서는 8장에서 소개했던 기법들을 원칙이라는 관점에서 설명합니다. 개방-폐쇄 원칙(Open-Closed Principle, OCP) 소프트웨어 개체(클래스, 모듈, 함수 등)는 확장에 대해 열려 있어야 하고, 수정에 대해 닫혀 있어야 한다는 원칙입니다. '확장에 대해 열려 있다는 의미'는 앱의 요구사항이 변경될 때 이 변경에 맞게 새 동작을 추가해서 앱의 기능을 확장할 수 있다는 의미이며, '수정에 대해 닫혀 있다는 의미'는 기존의 코드를 수정하지 않고도 앱의 동작을 추가하거나 변경할 수 있다는 의미입니다. 어떻게 기존 코드를 수정하지 않고도 새로운 동작을 추가할 수 있을까? 1. 컴파일타임 의존성을 고정시키고 런타임 의존성을 변경하라 런타임 의존성은 실행 시에 협력에 참여하는 객체들 사이의.. 2023. 7. 24.
[책 리뷰] 이펙티브 소프트웨어 테스팅 스터디 기간 2023년 4월 23일 ~ 2023년 5월 21일 스터디 시작 이유 최근 실무를 진행하면서 "프로젝트에 어떻게 하면 좋은 테스트 코드를 작성할 수 있을까?"라는 궁금증이 생겨 이를 해결하기 위해 테스트 관련 책을 찾아보다가 이 책이 나쁘지 않겠네?라고 생각이 들어 지인을 끌어들여 스터디를 진행하게 되었습니다. 감상평 기존에는 통합, 단위 테스트에 대한 개념만 알고 있었는데 이 책을 읽고 나니 테스트 종류 및 기법들이 여러 가지 있다는 사실을 알게 되었고 왜 테스트를 해야 하는지? 어떤 상황에서 어떤 기법으로 테스트하면 좋을지? 테스트 시 주의해야 할 사항, 어떤 기준으로 테스트 코드를 평가하면 좋을지? 에 대해 참고할 내용들이 많아서 좋았다고 생각합니다. 하지만 아쉬운 점으로는 이 책의 예제.. 2023. 5. 23.