[cs]런타임, 컴파일타임

Jeff·2024년 11월 5일
1

의존성에 대해서 공부를 하다보니 런타임 의존성과 컴파일타임 의존성에 대해 이야기가 나오는걸 종종 보았다. 그래서 이부분에 대해서 공부해보았다.

# 의존성

의존성(Dependency) : 객체지향프로그래밍을 하다보면 객체간의 협력이 이루어지는데, 객체들이 협력한다는건 서로 의존하고 있다는 걸 의미한다. 즉 파라미터나 리턴값 또는 변수등으로 다른 객체를 참조한다는 것을 의미한다고 한다.

# 의존성 전이

  • 객체 간의 의존은 협력을 하기위해 필수적이다. 하지만 이런 의존성이 과다해지지 않고 최소한으로 연결되도록 설계를 해야한다. 객체를 참조한다는건 객체를 변경할 때 변경된 객체를 참조한 객체들은 그들 또한 변경을 해야할 수 있기 때문이다. 이걸 의존성 전이라고 한다.

# 런타임 의존성과 컴파일타임 의존성

불필요한 변경을 줄이는 개방 폐쇠 원칙을 준수하도록 의존성 전이를 최소화해야 한다. 의존성 전이를 최소화하기 위해서는 컴파일 타임 의존성이 아닌 런타임 의존성을 가져야 한다.

  • 런타임 의존성 : 애플리케이션 실행 시점에서의 결성되는 객체들의 관계를 의미 (객체 사이의 의존성에 해당하면 추상화된 클래스나 인터페이스에 의존할때 -> 의존성이 낮아져 변경에 유연하다)

    • 런타임에서는 컴파일 타임에 생성된 코드가 실행되며, 프로그램이 필요한 작업을 수행합니다.
    • 런타임에서는 동적 바인딩, 메모리 할당, 예외 처리, 가비지 컬렉션 등의 작업이 수행됩니다.
    • 런타임에서 발생하는 오류는 주로 논리 오류, 예외 상황 등이며, 이러한 오류를 처리하기 위해 적절한 예외 처리 및 오류 처리 로직이 필요합니다.
  • 컴파일타임 의존성 : 코드를 컴파일하는 시점에서 결성되는 의존성이며, 표현된 클래스들의 관계를 의미 (일반적으로 추상화 클래스나 인터페이스가 아닌 구체 클래스에 의존 -> 결합도가 높다)

    • 컴파일 타임은 개발자가 소스 코드를 작성하고 컴파일러에게 전달하는 시간입니다.
    • 컴파일 타임에서 발생하는 오류는 주로 문법 오류, 타입 오류 등이며, 개발자는 이러한 오류를 수정하여 코드를 올바르게 작성해야 합니다.

# 요약

  • 컴파일타임 의존성

    • 코드를 컴파일하는 시점에 결정되는 의존성
    • 클래스 사이의 의존성
    • 결합도가 높으며 변경에 유연하지 못함
  • 런타임 의존성

    • 코드(애플리케이션)를 실행하는 시점에 결정되는 의존성
    • 객체 사이의 의존성
    • 결합도가 낮으며 변경에 유연함
profile
기본에 충실한 개발자가 목표!

0개의 댓글