[TIL] why use final class in swift (1)

Eden·5일 전
1

TIL

목록 보기
87/92
post-thumbnail

프로젝트를 진행하다보니 문득 궁금한 점이 생겼다. final 키워드를 사용해 class 구현했는데, MVVM 패턴 때문이라고 생각했다.
하지만 final class를 사용하는 이유는 MVVM 패턴과는 직접적인 연관이 있는 것은 아니고, 주로 기술적이거나 성능적인 이유 때문이라고 한다.

MVVM 패턴과는 직접적인 연관이 없지만, 코드 작성 시 의도를 명확히 하고 성능을 개선하는 데 도움을 준다고 한다.


final 사용하는 주요 이유

1. 상속 방지

  • final 키워드는 클래스가 상속되지 못하도록 제한한다.
  • MVVM에서 ViewModel은 일반적으로 상속 계층을 필요로 하지 않는다. ViewModel은 특정 화면에 종속된 역할을 수행하므로, 추가적인 상속 구조가 필요하지 않을 때 final을 사용하는 것이 안전하다.

2. 컴파일러 최적화

  • final 키워드를 사용하면 컴파일러가 클래스의 메서드 호출을 더 빠르게 최적화할 수 있다.
    • 상속 가능한 클래스는 메서드를 호출할 때 런타임에 동적 디스패치를 통해 구현을 찾아야 하지만, final class에서는 상속이 불가능하므로 정적 디스패치를 사용할 수 있다. 이를 통해 성능이 향상된다.

3. 코드의 명확성

  • final을 사용하면 개발자에게 이 클래스는 더 이상 확장되지 않을 것임을 명확히 전달한다.
  • 팀 협업 환경에서 의도치 않은 상속이나 오버라이딩으로 인해 발생할 수 있는 버그를 방지하는 데도 효과적이다.

4. MVVM과의 관계

  • MVVM에서는 ViewModel은 특정 View와 1:1 관계로 설계되는 경우가 많다.
  • ViewModel은 고유한 로직과 데이터를 가지고 있어 상속의 필요성이 낮다.
  • 따라서 MVVM 구조에서는 ViewModel에 final 키워드를 자주 사용하게 된다.

언제 final을 쓰지 않아야 할까?

클래스가 상속되어야 하는 경우

  • 추상 클래스 (예: BaseViewModel)
  • 공통 로직을 상속받는 여러 하위 클래스가 필요한 경우

결론

final 키워드는 MVVM을 사용하기 때문이 아니라, 클래스가 상속될 필요가 없고 성능과 코드 안정성을 고려할 때 사용하는 것입니다. MVVM에서는 ViewModel이 상속이 필요 없는 독립적인 역할을 수행하므로, 자연스럽게 final을 사용하는 사례가 많아지는 거라구 한다.

profile
Frontend🌐 and iOS

0개의 댓글