---
# System prepended metadata

title: RPS-Game PR step1
tags: [PR]

---

# RPS-Game PR step1

@Gundy93 
안녕하세요! 건디 첫 PR 보냅니다! 잘 부탁드려요😮

### 고민했던 점
#### 기능분리
* 함수는 하나의 일만 수행하는게 좋은 함수라 생각됩니다. 여러가지 기능을 분리하여 함수를 생성했는데 반환값을 받을 때 어려움을 겪었습니다. 이를  해결하기 위해 재귀함수를 사용했습니다. 하지만 inputUserHand()에서 입력도 받고 유효성 검사도 하는 것 같아 아쉬움이 남는 코드입니다.


### 해결하지 못한 점
#### 기능분리
* 기능을 분리하게 되면 입력받은 숫자를 검사하는 함수를 실행하고 Int로 바꾸는 함수를 만들어 실행하면 다시 String을 Int로 바꾸는데 많은 바인딩을 해야 합니다. 바인딩 작업 시 **guard let** 구문의 **else**문에서 반환값에 넣어줄 값이 없는 문제가 발생했습니다.억지로 필요없는 값을 반환하는 것은 좋지 않을거 같다고 생각되어 함수의 갯수를 줄였습니다.

![image](https://user-images.githubusercontent.com/88870642/209525234-2f35725f-7e8c-4f60-b0ac-71ba193d2c55.png)
위에 그림은 기능분리를 시도한 코드입니다.

### 조언받고 싶은 점
#### 기능분리
- 함수 기능을 정의하고 분리할 때의 기준을 어떻게 하면 좋을까요?


#### 가위바위보 로직
- 골똘히 생각해서 사용자 숫자와 컴퓨터 숫자를 빼는 방법을 생각했습니다. 혹시 더 좋은 방법이 있을까요?

###### tags: `PR`