---
# System prepended metadata

title: '은행 창구 매니저 [STEP1] 토털이, 애런'
tags: [PR]

---

# 은행 창구 매니저 [STEP1] 토털이, 애런
###### tags: `PR`

안녕하세요! @junbangg 
반갑습니다 알라딘:) 이번 스탭은 간단했지만 잘 부탁드립니다 :)

## 개발한 내용
1. Node 구현

2. LinkedList 구현

3. Queue 구현

4. CustomerQueueTest 구현

## 고민한 점
### 1. 테스트시 접근 제어자로 인한 문제
- 테스트시에 private 접근 제어자에 접근할 수 없어, 임시로 접근 제어자를 풀어준 후에 테스트를 하고, 이후 접근제어자를 붙여주었는데 맞는 방법인지가 궁금합니다!!
- 테스트 전
```swift
final class CustomerQueue<T> {
    let customerList = LinkedList<T>()
    
...
}

 // 테스트 코드
func test_one을_deque했을_때_Aaron이_나오는지() {
        sut.customerList.head = Node(one)
        let result = sut.dequeue()
        XCTAssertEqual(result, "Aaron")
}
```
    
- 테스트 후
    
```swift
final class CustomerQueue<T> {
    private let customerList = LinkedList<T>()
    
...
}
```
### 2. Customer Queue구현시 Linked List의 사용에 대한 고민
```swift
final class CustomerQueue<T> {
    private let customerList = LinkedList<T>()
    ...
}
```
위와 같이 Liked List의 타입을 미리 구현한 다음 은행 방문 손님을 담는 큐에서 해당 타입의 프로퍼티를 구현했습니다.
Customer Queue자체를 Linked List로 할지 해당 타입의 프로퍼티를 내부에 구현할 지 고민 되었지만 어떠한 타입의 정의는 범용적이여야 한다고 생각되어 프로퍼티를 가지는 방식으로 구현했습니다. 둘중 어떠한 방식이 더 적합할지 고민되었습니다!🤔🤔🤔🤔🤔