# 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) ```