---
# System prepended metadata

title: Untitled

---

안녕하세요 웨더(@SungPyo) 팀 JALO의 Jason, Logan 입니다. 😆
Step2에 들어와서 UML이 주어져서 최대한 TDD형식을 지키며 요구사항에 명시된 메서드를 구현해보려고 하였습니다. 
아무래도 TDD를 지키면서 구현하려다보니 Step의 진도가 많이 느리지만 앞에서 테스트한 코드가 정확하다는 믿음을 갖고 다음 로직을 구현하는데 있어서 장단점이 분명한 개발방법론 같다는 생각이 들게되는 한 주였습니다. 그럼 잘 부탁드립니다! 🫡 > 설 연휴 잘보내세요!!🧧🧧🧧

---

### **🧑🏼‍💻 작업 목록**
- [x] UML에 주어진 테스트 코드 작성
- [x] 테스트 코드를 중심으로 로직 구현
- [x] Operator안에 메서드 구현
- [x] CalculatorItemQueue안에 메서드 구현
- [x] Node, LinkedList, CalculateItemQueue에 제네릭 타입 적용

[TDD]
- [x] CalculatorTests
- [x] OperatorTests
- [x] CalculatorItemQueue
- [x] FormulaTests

### **💭 학습 키워드**
- Singly Linked List
- Generic
- Class Diagram
- Protocol
- Access Control

### **🤔고민과 해결**
- 프로젝트 진행 과정 중 UnitTest 파일을 분리하여 작업을하여 보기 쉽게 폴더링을 하고싶었습니다.
계속해서 시뮬레이터가 Clone되어 여러개로 불필요하게 생성되는 문제점이 있었습니다.
해결방법으로 프로젝트에서 Targets안에 `Unit Testing Bundle`을 새로 생성하여
해당 Scheme을 추가하여 해결해보았습니다.

- Formula의 객체 안에 `operands`, `operators`을 저장프로퍼티로 갖고 있는데 두 프로퍼티의
타입이 `CalculateItemQueue` 타입으로 되어있어서 기본적으로 계산기의 사칙연산 방식이
`피연산자 - 연산자 - 피연산자` 구조로 되어있어 어떻게 분리할지 고민을 많이하였습니다.
UML을 좀 더 깊이 들여다보니 `CalculateItem` 프로토콜을 채택하고있는 `Operator`와 `Extension 된 Double 데이터 타입` 이렇게 2가지를 확인할 수 있었고 제네릭을 사용하여 해결할 수 있게되었습니다.

### **🙋🏻 질문 거리**
1. UML에 있는 CalculateItemQueue를 LinkedList와 연결지어 고민하다보니 정의내리기가 어렵고
헷갈리는 부분이 많은 것 같습니다.. 
LinkedList는 Queue라는 자료구조를 따라가고 `Queue라는 자료구조를 통해 LinkedList로 실체화를 한다고 이해`하였는데 정확히 이해한 것이 맞는지 궁금합니다!

2. Step2에서 제공된 UML에 맞춰 작성하는데 추가적인 메서드나 프로퍼티를 생성하고 싶은 부분이 있어
추가적으로 구성해도될까요??

3. LinkedList로 구현하면서 다시한번 LinkedList의 효율성이 너무나도 떨어지는것 같다고 느꼈습니다. 실제 현업에서는 LinkedList를 어떤 부분에 적용하는지 알고싶습니다.