클래스 간 높은 의존도로 인해 제네릭을 사용할 수 없었고, 이를 개선하려니 구조적인 수정이 필요했다.
코드 수정 범위가 매우 넓어졌으며, 제네릭을 적용할 엄두가 나지 않음.
클래스 간 의존도가 너무 높아 유연성이 부족함.
처음 설계 시 확장 가능성을 고려하지 못함.
낮은 결합도와 명확한 역할 분리가 중요하다.
코드 구조와 설계 단계에서부터 의존성을 고려해야 한다.
기존 코드를 모두 재작성
클래스 간 의존도를 낮추기 위해 인터페이스를 도입
InputValue에서 입력값을 받고, 이를 ArithmeticCalculator로 전달.
제네릭을 활용하여 입력값의 타입에 따라 유연하게 동작하도록 구현.
값의 타입을 판별
입력값이 소수점 포함 여부에 따라 Integer 또는 Double로 초기화.
초기화된 값을 인터페이스를 통해 ArithmeticCalculator로 전달.
ArithmeticCalculator에서 전달받은 값이 Number 타입이 아닌 경우 예외 발생.
연산 메서드에서 값들을 계산.
구조적으로 더 개선된 코드를 작성할 수 있었으며, 제네릭 활용법을 익힘.
- 제네릭 활용이 처음이라 복잡하게 느껴짐.
- 입력값의 타입에 따라 출력값도 달라지도록 구현하는 데는 실패.
- 인터페이스를 활용한 의존성 감소 및 제네릭 사용법 학습.
- 클래스 간 결합도를 낮추는 설계의 중요성 이해.
- 코드 설계 시 확장 가능성과 유지보수성을 고려해야 함.
- 입력값에 따른 결과 출력 타입을 다르게 표현하는 로직 미완성
- 정수-정수 나눗셈의 경우 실수로 출력하는 방법 추가 학습 필요.
- 리드미와 트러블 슈팅 작성에 충분한 시간을 할애하지 못함
- 다음 과제에서는 기록에 시간을 더 투자할 예정.