본문 바로가기

분류 전체보기62

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