Calculator(12)
-
[내일배움캠프] 계산기 구현 - 피드백 반영(3)
세 번째 피드백은 '0' 으로 피연산자를 나누는 연산에 대한 예외 처리와 '명확한 예외 처리' 에 대한 내용이었으며, 피드백을 반영한 코드는 여기서 확인할 수 있다. 1. 명확한 예외 처리 연산(입력 값)에 대한 유효성을 확인하는 'checkValidCalculation(String)' 메서드이다. 만약 유효하지 않다면 'BadInputException' 이 발생, 예외의 처리 책임은 메서드를 호출한 곳으로 넘긴다. 그래서 아래의 이미치처럼 발생한 예외를 'Level04.start()' 메서드에서 처리하도록 구현했다. 문제의 구현부인데, 'InputValidator.checkValidCalculation()' 에서 발생한 예외를 'catch' 를 통해 잘 처리한 듯 보이지만 'catch' 에 지정된 예외..
2024.09.18 -
[내일배움캠프] 계산기 구현 - 피드백 반영(2)
두 번째 피드백은 '불필요한 연산 객체 (반복)생성' 에 관한 내용이었다. 확실히 나의 불찰로 생긴 문제였기에 피드백을 적극 반영해 문제를 해결해 보았다. 피드백을 반영한 코드는 여기서 확인할 수 있다. 1. Level.02 계산기 피드백 내용을 정리하면 '불필요한 연산 객체' 를 계속 생성하는 것과 'Calculator' 클래스의 역할이 '입력 값을 연산' 하는 역할임에도 'Operation 인터페이스' 의 구현 클래스 객체를 매핑하는 역할도 수행하고 있다는 문제가 존재한다.1-1. 문제 파악 현재 Level02 계산기는 'Level02.start()' 메서드의 내부 로직이 반복되는 구조로 'Level02' 객체 생성시 'Calculator' 객체를 한 번 생성한 뒤 'start()' 메서드가 수행되..
2024.09.18 -
[내일배움캠프] 계산기 구현 - 피드백 반영(1)
피드백 사항 첫 번째 내용인 '네이밍' 에 대한 내용을 정리해보려 한다. 정확하게는 '클래스 및 메서드의 네이밍' 으로, 어떤 피드백을 받아 프로젝트에 어떻게 반영했는지 기록했다. 피드백을 반영한 코드는 여기서 확인 할 수 있다. 1. 클래스명 먼저 클래스의 경우 현재 문제가 되는 것이 입력 값의 유효성을 검증하는 역할을 가진 'ValidInput' 클래스이다. 나의 경우 '입력 값의 유효성 검증' 이란 의미를 포함하고 있으며 길이를 최대한 줄이기 위해 이러한 네이밍을 하였는데, 실상은 적절하지 못한 네이밍으로 보인다는 것이 피드백 내용이다.1-1. 줄임말(약어) 사용 기존 TIL 에도 이름이 길어보여 줄임말을 활용해 네이밍을 했다고 작성했지만, 상당히 잘못된 생각이었다. 항상 "내가 작성한 코드는 '나..
2024.09.17 -
[내일배움캠프] 계산기 구현 - level.04
이번에 구현한 'Level04 계산기' 는 개인적으로 추가 기능을 반영하기 위해 구현하였다. 내가 반영하고자 하는 것은 바로 Exception 의 활용에 대한 부분인데 해당 부분을 반영하고자 한 이유는 현재 구현된 일부 메서드들이 2개 이상의 기능을 수행한다는 점 그리고 필요에 의해 구현했지만 'boolean' 을 반환하는 메서드를 비교적 자주 구현/사용한다는 점이다. 위 이미지의 메서드는 'level03/validation/ValidInput.validCalculation()' 메서드이다. 해당 메서드에 부여한 주 역할은 입력 값의 유효성을 검증하는 것인데, 현재 '검증' 뿐만 아니라 '출력' 도 같이 수행하고 있다. 그리고 메서드의 반환 타입이 boolean 인데 이러한 메서드가 여럿 되다 보니 추후..
2024.09.10 -
[내일배움캠프] 계산기 구현 - 리팩토링
현재 '계산기 구현`에 대한 요구사항을 모두 프로젝트에 반영하였다. 이번에는 해당 프로젝트에 요구사항이 제대로 반영되었는지 확인하고 필요하다면 수정하려 한다. 더불어 구현 때문에 미루어 두었던 'README.md' 파일도 수정하였다. 1. README.md 다른 사람이 해당 프로젝트를 확인해도 쉽게 이해를 도울 수 있도록 READMD.md 를 작성해 두었는데, 이전에 없던 '목차' 와 '시스템 아키텍처' 를 추가하였다. 2. 코드 리팩토링(refactoring) 기존에 사용하던 클래스, 메서드, 변수의 이름을 수정하고 기존에 작성해둔 주석도 수정하였다. '클래스/메서드 이름 수정' 에 대한 일부는 아래와 같다.ValidInputData → ValidInput : 입력 값의 유효성 검증 역할을 가진 클래..
2024.09.09 -
[내일배움캠프] 계산기 구현 - level.03(3)
마지막 요구사항(도전 기능)은 'Stream & Lambda 를 적용한 메서드' 를 구현해 'level03' 계산기에 적용하는 것이다. 정확한 요구사항은 현재 연산결과를 저장하는 'Collection' 객체와 현재 입력한 연산의 결과를 비교해 현재 연산결과 보다 큰 이전 연산결과들을 출력하는 메서드 구현이고 해당 메서드에 'Lambda & Stream' 을 활용하는 것이다. 1. 새로운 연산결과 출력 메서드 추가(Lambda & Stream 활용 필수!) 수정 전 코드를 기준으로 설명하면 나의 경우 'Calculator' 클래스에 연산결과를 저장하는 'Collection' 객체가 필드에 존재한다. 그리고 가장 최근 연산결과 5개를 출력하는 메서드 'getCalculateResults()' 를 구현해 두었..
2024.09.08