# 48번 회의실
S065_홍동현, S040_이은정, S053_조기현
### 목적
정보 공유, 피드백 수용
### 과정
* 1주차 미션 코드설명, 피어 리뷰
* 미션을 수행하면서 들었던 의문점 공유
* 리뷰어님으로부터 받은 피드백 내용을 공유
### 결과
* 다양한 문제 해결 방법 공유
- 스토리보드에서의 오토레이아웃 경고
<img width="40%" src="https://user-images.githubusercontent.com/50410213/91726028-87163980-ebda-11ea-8412-a5b41f8a9fdc.png"/><img width="60%" src="https://user-images.githubusercontent.com/50410213/91726422-2c311200-ebdb-11ea-91ad-a0089818e0b8.png"/>
레이아웃을 한 방향으로만 잡아줬을 때 뷰의 사이즈를 계산하지 못해 나타나는 경고를 범위 오토레이아웃을 잡아줌으로써 해결
- shuffle 메소드 테스트
[shuffle(using:)](https://developer.apple.com/documentation/swift/array/2994755-shuffle) 를 활용해 인자로 받은 [RandomNumberGenerator](https://developer.apple.com/documentation/swift/randomnumbergenerator) 로 로직을 수행하도록 구현
실제 앱 실행에서는 기본 라이브러리에 구현되어 있는 [SystemRandomNumberGenerator](https://developer.apple.com/documentation/swift/systemrandomnumbergenerator) 로 shuffle 을 실행하고, 테스트 단계에서는 고정 시드를 반환하는 Generator 를 만들어 실행
```swift
final class FixedSeedGenerator: RandomNumberGenerator {
func next<T>() -> T where T : FixedWidthInteger, T : UnsignedInteger {
return 1
}
}
```
`FixedSeedGenerator` 는 항상 고정된 시드값 1을 반환하기 때문에 shuffle 에서 항상 같은 결과가 나옴
* 각자 코드 문제점 공유
* 아래 코드와 같이 class의 property 값을 초기화 해주는 내용을 내부 메소드로 대체하려다 보니 피치 못하게 property를 Implicitly Unwrapped Optionals 로 선언했다.
``` swift
private var cards: [Card]!
init(){
reset()
}
```
하지만, property를 Implicitly Unwrapped Optionals로 선언하는 것은 좋은 방법이 아니었고, reset() method의 내용을 init()에 채워 넣어 property를 초기화 하고, reset() method는 아래와 같이 수정한다면, optional 로 선언하지 않아도 된다.
``` swift
mutating func reset() {
self = Deck()
}
```
<br/>
* 범위 체크를 아래처럼 바꿔 가독성이 좋게 했다.
``` swift
if playerCount < 1 || playerCount > 4
```
``` swift
if (1...4).contains(playerCount)
```