티스토리 뷰

TIL

TIL ('21.02.22)

learner._.Kio 2021. 2. 22. 23:19

학습내용

  • STEP 0 - 추억공유하기

    사실상 처음 마주하는 시간인데 라면에 대해 말하는 게 무척이나 생소했지만 Rayn과 SJ가 말을 잘 해주어서 생각보다 대화가 잘 이어진 시간이었다.

  • STEP 1 - 자신의 코드 돌아가며 설명하기

    내 코드를 설명한다는 것은 키보드로만 작성할 때와는 또 다른 일이었다. 내 자신도 왜 이렇게 쳤는지 납득이 가지 않았다면 설명하기는 더욱 어려웠지만 일단 했다.


    미션 당시 나의 코드

    import Foundation
    
    var input = readLine()!
    var num = Int(input)
    
    for _ in 1...100 {
        if num != nil {
            while num == 0 || num == 1 || num == -1 {
                print("입력값이 잘못되었습니다. 다시 입력해주세요.")
                getInput()
            }
    
            checkExit()
            print("구구단을 외자 : \(num!)단")
            for index in 1...9 {
                print("\(num!) x \(index) = \(num! * index)")
            }
    
            print("알고 싶은 구구단을 입력해주세요!")
            getInput()
        }
    }
    
    // input 입력 함수
    func getInput() {
        input = readLine()!
        num = Int(input)
    }
    
    // exit 체크
    func checkExit() {
        if input == "exit" {
            return;
        }
    }
  • STEP 2 - 상대방의 코드 리뷰해주기

    내 코드를 Ryan과 SJ과 봐주는 건 큰 도움이 되었다. 코드를 작성하는 방법은 여러가지가 있다는 것은 알고 있었지만 어떻게든 구현되면 되지 않을까 하는 마음이 있었던 것은 사실이다. 코드리뷰를 통해 다른 접근법을 알게 되니 비록 짧은 코드지만 코드작성이 좀 더 수월해졌다.


    코드 리뷰 후 나의 코드

    import Foundation // 유무? 어떤 용도?!
    class Gugudan {
        func startGame() {
    
            var input = readLine()! 
            var num = Int(input) 
    
            // input 입력 함수
            func getInput() {
                input = readLine()!
                num = Int(input)
            }
    
            // exit 체크
            func checkExit() {
                if input == "exit" {
                    return;
                }
            }
    
            while true { 
                if num != nil {
                    while num == 0 || num == 1 || num == -1 {
                        print("입력값이 잘못되었습니다. 다시 입력해주세요.")
                        getInput()
                    }
    
                    checkExit()
                    print("구구단을 외자 : \(num!)단")
                    for index in 1...9 {
                        print("\(num!) x \(index) = \(num! * index)")
                    }
    
                    print("알고 싶은 구구단을 입력해주세요!")
                    getInput()
                }
            }
        }
    }
    let gugu = Gugudan()
    gugu.startGame()
  • STEP 3 - 짝 프로그래밍으로 구구단 코드 작성하기

    처음 들었을 때는, 상의 없이 10분간 로테이션으로 하는 짝 프로그래밍은 어떤 목표가 있을까를 생각했다. 처음엔 다소 막막했지만 일단 해보기로 했다. step1에서의 내 코드를 말하는 것도 힘들었지만, 이건 더 어려웠다. 10분이라는 시간에 몇줄 짜지도 못하기 일쑤였지만, 하다보니 협업할 때 혹은 코드에 대해 말할 때 정확히 전달하는 게 중요하겠다는 생각이 들었다.


고민한 점 / 새로 알게 된 점

  • 중괄호, 대괄호, 꺽새를 어떻게 말해야할지?

    [ ] (Square Bracket) 
    { } (Curly Bracket / Brace) 
    < > (Angle Bracket) 
    // 찾았는데 한국어로 말하는 게 편하긴 했다.
  • Switch-case 이용

    • if문만 생각했는데 switch문은 편했다.
  • Optional

    • 강제추출, 옵셔널 바인딩 등등 SJ가 예시를 들어 하나하나 설명을 많이 해주었다.
  • Fallthrough 에 대해 배웠다.

    let num = 1
    
    switch num {
    case 1:                   // num이 1일 때 실행
       print("num = 1")       // 보통은 "num = 1" 출력 후 switch 구문 종료
          fallthrough            // fallthrough, 이어지는 block 실행
    case 2, 3:                      // case 검사
       print("num = 2 or 3")    // 출력
    default:                                    
       break
    }
  • Optional 강제추출 오류가 나는 경우는 무엇일까?

    • 옵셔널은 알수록 더 모르겠는 느낌이다. 처음 swift에서는 Optional 강제추출만 있었는데 오류가 생겨서 옵셔널 바인등 등 다른 방법까지 만든게 아닐까 라는 생각까지 해보았다.
  • Import Foundation이 무슨 의미일까?

    Those are two different SDK´s that Apple provides. Apple provides thousands of different SDK for handling different stuff. They don´t put all their functions in one file, because that file would be unnecessary big, they instead let you import only what you need. UIKit contains functions you can use in regards of the user interface. Foundation contains the core stuff you´ll need to make an app. You can read more about it here: https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/ObjC_classic/index.html


고마운 점

아직은 어려운거 투성이지만 다들 오늘 하루 고생하셨어요!

특히 Ryan, SJ 사소한 질문에도 잘 답해줘서 고맙습니다ㅎㅎㅎ

'TIL' 카테고리의 다른 글

TIL ('21.03.01)  (0) 2021.03.02
TWL ('21.02.22~'21.02.26) with Ryan  (0) 2021.02.27
TIL ('21.02.26)  (0) 2021.02.27
TIL ('21.02.25)  (0) 2021.02.26
TIL ('21.02.23)  (0) 2021.02.24
댓글