- 소개
- 타임라인
- 시각화된 프로젝트 구조
- 실행 화면
- 트러블 슈팅
- 참고 링크
'🐍'과 '🐉' 이 함께 만든 가위바위보 프로젝트입니다.
가위바위보 게임을 진행 후 묵찌빠 게임까지 진행되는 게임 프로젝트입니다.
부족하지만 최대한 기능구현에 목적을 두었습니다.
뱀 |
드래곤 |
![](https://camo.githubusercontent.com/ddb960a9a78f7ce0804df5f69c9aeb6b6cdcedf9efc17252fc591a0e4c888279/68747470733a2f2f692e696d6775722e636f6d2f354831337048382e706e67) |
![](https://camo.githubusercontent.com/fbc2a1082753f9e0a4627e971c11a3f07ace514e85d77ee3c1502890365007c7/68747470733a2f2f692e696d6775722e636f6d2f663067627148462e6a7067) |
- Step1 플로우 차트 추가
- Step1 기능 구현 완료
- Step1 PR 전송
- Step1 리뷰결과 수정
- Step2 플로우 차트 추가
- Step2 기능 구현 완료
- Step2 PR 전송
Step 1_FlowChart |
Step 2_FlowChart |
![](https://camo.githubusercontent.com/13bde9c10e49d6619ad0f2134338dfd32d6db8ed30e324ca5182dc6fc8864fe3/68747470733a2f2f692e696d6775722e636f6d2f62595536706a462e706e67) |
![](https://camo.githubusercontent.com/06b24a9cfb6bdd443d22ebf5495cf2522248ab208ae9349cbc79bceaa69a7409/68747470733a2f2f692e696d6775722e636f6d2f41304768684b4a2e706e67) |
승리 / 무승부 |
패배 / 입력 오류 |
![](https://camo.githubusercontent.com/380fc6855060498d9b1cdb8a95049b3519210ce1714e48681bf77137f4134417/68747470733a2f2f692e696d6775722e636f6d2f353750494868572e676966) |
![](https://camo.githubusercontent.com/dadf5392478e07988cb12677599b5b4ca2e25533732a12f050c19de5e4d8393a/68747470733a2f2f692e696d6775722e636f6d2f6e72493861306a2e676966) |
승리 |
패배 |
![](https://camo.githubusercontent.com/4080396fef47c58af5881dfdea6a3c1dbbaabc08af7337c7bce649d6e1f07b2a/68747470733a2f2f692e696d6775722e636f6d2f6b70757872454e2e706e67) |
![](https://camo.githubusercontent.com/0892703f8f1f7ff4409220a59770e58f63c97de376e2fb39a8d2ef9631f800a1/68747470733a2f2f692e696d6775722e636f6d2f62544a52496d722e706e67) |
- if문과 switch 간의 사용 고민
- if 은 다소 간단한 경우를 다룰 때 사용하고 원하는 한가지 이상의 조건을 다룰 수 있다.
- switch 의 다양한 경우를 다룰 때 사용하는 것이 좋고 무조건 모든 조건을 설정해 주어야 한다.
- 아래의 경우에서 switch 와 if 중 사용에 대한 고민이 적었다.
switch userNumber {
case 1, 2, 3 :
return compareTwoInput(userNumber, with: computerNumber)
default :
return "종료"
}
-
loof문과 재귀함수의 사용 고민
- 이 프로젝트에서는 loof 를 사용 했다.
- 재귀함수를 사용했을 때 나오는 사이드 이펙트를 완벽하게 관리하지 못해 loof 를 사용했다.
- 하지만 재귀함수 관리가 완벽할 경우에는 코드 직관성 또는 변수 사용량을 줄여 줄 수 있는 이점이 있다.
-
if let, guard let 사용 고민
- if let은 그 구문 중괄호 안에서 사용이 된다. 여기서 바인딩 된 상-변수는 if let 밖에서 사용 할 수 없다.
- guard let 은 오류 발생 시 중괄호 안의 구문이 실행되어 종료된다. 또한 guard let 밖에서 상-변수를 사용 할 수 있다.
- if let 을 쓰게 된다면 바인딩 되었을 때 중괄호의 중첩이 하나 더 생기기 때문에 guard 문 사용을 더 고려 했으면 했다.
- 에러 처리
- 이 프로젝트에서의 에러 모두 nil 값을 던져주어 사용 시에 오류 처리를 해준다.
- 에러처리를 더 세부적으로 나누어서 어떤 오류가 문제인지를 확인시켜주어야 할 것 같다.
- 은닉화 및 캡슐화
- 처음에는 파일 및 함수를 세분화 하여 구현하지 않았다.
- 추후 파워코딩 혹은 무거운 프로젝트를 다루게 된다면 접근 제한자를 사용한다던지, 함수의 재활용을 할 것이다.
- 현재 우리의 프로젝트에서는 깊숙하게 세분화 하지 못했다.
- 그렇게 된다면 추후 프로젝트를 다룰때 필요없이 중복 되는 부분이 많이 생기거나, 접근제한자를 정확하게 사용 할 수 없기 때문에 유지 관리가 힘들 것이다.
- 그렇기 때문에 추후 프로젝트 과정에서는 조금더 파일 혹은 함수들을 최대한 간략하게 구성하려고 노력 해야 겠다.
- 기본 문법 숙지
- 이 프로젝트를 진행 하면서, 기본적인 문법이 많이 비어있어서 어려움을 겪었기 때문에 기초를 좀 더 다지려고 노력 해야 겠다.
- Swift API Design Guidelines
- Swift Language Guide
🔝 맨 위로 이동하기