Giter Club home page Giter Club logo

ios-number-baseball's Introduction

숫자야구 프로젝트⚾️

소개


  • 컴퓨터가 랜덤으로 생성한 중복되지 않는 3개의 숫자를 맞추는 게임입니다!

팀원


Rilla Christy
Rilla Christy

⏩ 타임라인


  • Step 1

image

  • Step 2

image image image

순서도


  • Step1

image

  • Step2

image

🖥️ 실행 화면(기능 설명)


1. 게임 시작 화면

image

2. 정상 입력 화면

image

3. 오류 화면

image

4. 정답 화면

image

5. 종료 화면

image

🚀 트러블 슈팅


Step 1

  • 중복되지 않은 3개의 숫자

1에서 9까지의 숫자중 중복되지 않은 숫자를 어떻게 3개만 뽑아 올까 고민을 많이 했다. 만약 뽑았을때 중복의 갯수가 한개가 될 수도 있고 두개가 될 수도 있었기에 Array와 조건문으로는 쉽게 해결하지 못할것 같았다. 그래서 Set 콜렉션 타입을 사용해 랜덤 숫자를 Set 콜렉션의 Count가 3이 될때까지 계속해서 뽑는식으로 해결했다.

  • FlowChart 작성법

기존에 FlowChart작성을 해본적이 없어서 어디까지 그림에 표현해야 하는지에 대한 감이 잘 잡히질 않았다. 그래서 복잡하고 세세하게 적기보단 최소한의 요구사항만 다 들어가있는 흐름도만 작성하자 라는 결과에 도출 해 작성했다.

Step 2

  • readLine의 안전한 옵셔널 추출 방법

readLine을 통해 받아온 문자열이 옵셔널이기 때문에 안전하게 추출하는 방법에 대해 고민을 많이 했다! 구글링을 통해 찾은 자료들 대부분이 강제 추출을 사용했는데, 과제 제약사항에 위반되는 부분이라 다른 해결 방법을 찾아야 했다. 그러다 compactMap을 알게 되었다. compactMap은 nil을 자동으로 제거해줘 안전하게 옵셔널 바인딩을 할 수 있다. 사용 방법은 map과 똑같은 클로져로 사용하면 된다!

  • enclosing catch is not exhaustive 에러

처음에 정의한 모든 에러 타입을 catch를 했음에도 불구하고 지속적으로 enclosing catch is not exhaustive 에러가 발생했다. 이를 해결하는 방법으로 추가적으로 catch문 이 하나 더 필요했다. 이는 정의하지 않은 에러가 발생할 수 있는 상황에 대비하여 작성해 줘야 했습니다. 추가적으로 'localizedDescription'은 에러의 코멘트 역할을 한다!

🔍 참고 링크


☑️ 프로젝트 수행 중 핵심 경험


  • 순서도 익히기
  • 함수 단위 고민하기
  • Git의 기본 사용(add, commit, push, pull)
  • GitHub의 원격 공동 저장소 활용
  • Git 저장소의 충돌 해결
  • Git Branch의 이해
  • GitHub에서 Pull Request 전송
  • Swift API Design Guidelines 읽어보기
  • Swift Set의 이해와 활용
  • Swift의 Optional 안전하게 처리하기
  • Git의 커밋단위 고민하기
  • Git 커밋 로그 형식 고민하기
  • 스위프트 코딩 컨벤션 고민하기
  • 동료와 협업자세 고민하기

ios-number-baseball's People

Contributors

christy-hs-lee avatar juun97 avatar yagom avatar

Forkers

juun97

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.