Skip to content

Latest commit

 

History

History
26 lines (23 loc) · 1.96 KB

211222week3step2feedback.md

File metadata and controls

26 lines (23 loc) · 1.96 KB

TIL 211222

Tag: week3step2feedback

🔥학습 내용

struct 와 class를 선택하는 기준

  • 공유되어야하는 값들(참조)이 있다면 주저하지 않고 class를 택함.
  • 특히 타입 안에 또다른 타입의 instance가 들어가야 하는 경우에는 더더욱.
  • struct는 struct 자체로만 쓰이는 경우에 주로 사용.
  • struct 내부에 class와 같은 참조 자료형이 있으면 성능적으로 좋지 못하다.
    • struct안에 레퍼런스가 있는 경우, 레퍼런스 수에 비례하여 레퍼런스 카운팅 오버헤드를 지불하게되고 둘 이상의 레퍼런스가 있는 경우 class보다 레퍼런스 카운팅 오버헤드가 더 많이 유지되기 때문에.

최근에서야 공식문서에서 애플은 struct를 좋아한다라는 것만 보고 최대한 struct를 사용하고자 했었고, 프로젝트를 진행할 때 유명한 아키텍쳐들의 예제를 보면 보통 Model과 관련된 부분만 struct를 쓰고 대부분의 요소들에는 class를 사용하는것과 실제로 나도 주로 class위주로 사용했던것에 의문이 있었는데 아직 완벽하게는 아니지만 해당 의문에대한 어느정도의 밑그림은 그려지는 것 같다. 왜라는 질문을 왜 계속 던져야되는건지 이제 좀 알 것 같다. 의문이 생기면 대충 생각만 하지말고 무조건 왜라는 질문에 대답할 수 있을 때 까지 깊게 파고드는 습관을 만들어야겠다.

옵셔널 바인딩 guard 와 if의 차이

  • guard
    • Early Exit!
    • if 코드보다 훨씬 간결하고 읽기 좋게 구성 가능
    • 예외사항만을 처리하는 경우에는 guard구문이 훨씬 간편
    • 해당 상수를 메서드 내에 지역 상수처럼 자유롭게 사용이 가능
    • return,break,continue,throw등의 제어문 전환 명령어를 쓸 수 없는 상황이라면 사용 불가
  • if
    • if let으로 옵셔널 바인딩 된 상수는 해당 scope 안에서만 사용 가능