티스토리 뷰

TIL

TIL ('21.03.08)

learner._.Kio 2021. 3. 9. 00:08

학습내용

1-2주차 프로젝트에 대한 이야기

  1. 숫자야구게임
  2. 묵찌빠게임
    • 2개의 가장 큰 차이는 step1과 step2를 꼰 점.
    • step1을 구현하고 step2를 하려는데 코드 전체를 갈아엎어야한다면 잘못 설계한 것이다. 이게 큰 프로젝트였다면?
    • 설계, 로직이 정말 중요하다. 코드를 쓰기 전, 먼저 구상을 하는 것이 우선이다.
      • 펜과 종이로 그려가면서 하는 게 좋다. 큰 삽질을 막을 수 있다.
    • 문법은 하면서 자연스럽게 익히게 되는 것이다.

프로젝트 회고 - README에 기입

  • 밀린 일기처럼 쓰면 안된다. 바로 써야된다.
  • 프로젝트 회고를 하면 README에 꼭 적어야 한다. → 포트폴리오
    • 느꼈던 점, 해결되지 않은 점, 고민했던 점
  • 샘플
    • step별로 뭘 했다.
    • 뭘 공부했다
    • 어떤 피드백을 받았다
    • 다음 stpe은 뭘 공부했고
    • 이것을 통해서 어떤 기능을 구현했다.

Design Patterns

  • 디자인 패턴? == 설계 양식, 설계 템플릿

    디자인 패턴 == 코드들의 모양세, 설계 템플릿 정도로 알아두면 된다.

  • 함수를 나눠야하는 것처럼!

    Programming Design Patterns
    • OOP의 다양한 문제상황에 대한 예방 - 짬이 차면 알게 되는 것. 그러한 것들을 정리해놓은 것!

    • 프로그래머 사이의 협업효율 향상 - ex) 게임작전을 짤 때, 게임용어, 4드론

    • 프로그래머 사이의 의사소통 증진 - ex) 게임작전을 짤 때, 게임용어, 4드론

    • 코드의 안정화 및 최적화

    • 코드의 재사용성 증가

      적절히 사용해야한다.

      수단으로 삼아야지, 목적으로 삼으면 안된다 → 주객전도한느 상황이 오면 안됨!

디자인 패턴은 일종의 설계 템플릿이지만, 꼭 똑같이 하지 않아도된다.

필요에 의해서 조금씩 변형해서 쓸 수 있다. 꼭 모든 걸 그대로 지킬 필요는 없다.

Architectures

  • Architectures : 뼈대, 큰 그림

    ex) 집짓기

  • Design Patterns : 큰 Architectures 안에서 해결할 수 있는 하나의 방식

    ex) 계단을 오르내리기 힘들어 → 에스컬레이터 설치

  • MVVM (model-view-viewmodel)

  • MVC (Model-View-Controller) : Swift

Xcode

  • View - main.storyboard에 보이는 것

  • View Controller - 화면에 없음. Class. Controller는 이 이름이 다 붙어있음.

  • ctrl + cmd / opt : 궁금한 게 있다!

  • model은 아직 많이 볼일이 없다.

    • model - 데이터 저장소의 형태

        Struct Camper {
            var name: String
            var nickname: String
          var age: Int
        }

클래스와 구조체의 차이는 뭘까?

Value Types vs Reference Types

  • Value Type
    • Structure
    • Enumeration
    • Tuple
  • Reference Type
    • Class
    • Closure

Value Types(Struct) vs Reference Types(Class)의 비교

struct PositionValue {
    var x = 0.0
    var y = 0.0
}

class PositionObject {
    var x = 0.0
    var y = 0.0
}
// 생성과 동시에 기본값 저장 - 기본생성자var v = PositionValue()
var o = PositionObject()

var v2 = v
var o2 = o

v2.x = 12
v2.y = 34

v.x // 0
v.y // 0
v2.x // 12
v2.y // 34// 구조체는 값형식으로, v2는 v의 복사본으로 v2에서 값을 바꿔도 v에는 아무런 변화가 없다.// v2와 v는 서로 다른 메모리 공간

o2.x = 12
o2.y = 34

o.x // 12
o.y // 34
o2.x // 12
o2.y // 34// 클래스는 새로운 복사본을 생성하지 않고 원본(참조)을 전달하기 때문에 어떤 변수를 통해서 속성을 바꾸더라도 항상 같은 대상을 바꾸게 된다.
  • 어떤 것을 선택해야할까?
    • 값 형식의 메모리 처리방식, 참조 형식의 메모리 처리방식
    • 두 형식의 차이점을 알고 구현목적에 맞게 선택 - 하지만 경험이 필요
    • 일반적인 구현 지침
      • OOP에서는 대부분 참조형식인 class로 구현
      • 상대적으로 적은 데이터를 저장하고 상속이 필요하지 않다면 값형식으로 구현
      • 값이 전달되는 시점마다 복사본이 생성되어야 한다면 값형식으로 구현
      • 연관된 상수 그룹을 표현할때는 열거형
      • 코드내에서 한번만 사용되는 형식은 튜플
      • 나머지 값형식은 모두 구조체

 

고민한 점 & 새로 알게 된 점

  • Type 정하기

  • 쥬스메이커 과일의 재고관리 방법은?

    • Dict?

    • Array?

    • Enum?

      → Dict, Array, Enum의 각 장점은 무엇일까?

    • Struct?

    • Class?

      → Struct와 Class 차이 공부할 필요

  • 쥬스메이커 프로젝트 실행을 어떻게?

    1. 단순 → 새로운 playground 실행

    2. AppDelegate.swift에서 9번째줄 @main 삭제

      JucieMaker.swift → Main.Swift 변경

    3. ViewController를 통해 실행가능(정확히는 잘 모르겠음)

'TIL' 카테고리의 다른 글

TIL ('21.03.11)  (0) 2021.03.12
TIL ('21.03.09)  (0) 2021.03.10
TIL ('21.03.07)  (0) 2021.03.08
TWL ('21.03.01~'21.03.05) with Kane, 강경  (0) 2021.03.06
TIL ('21.03.05)  (0) 2021.03.06
댓글