정적 타입 vs 동적 타입

김신·2023년 1월 14일
0

Modern JavaScript

목록 보기
5/11
post-thumbnail

정적 타입

C나 자바 같은 정적 타입 언어는 변수를 선언할 때 변수에 할당할 수 있는 값의 종류, 즉 데이터 타입을 사전에 선언해야 한다. 이를 명시적 타입 선언이라고 한다.

정적 타입 언어는 변수의 타입을 변경할 수 없으며, 변수에 선언한 타입에 맞는 값만 할당할 수 있다. 정적 타입 언어는 컴파일 시점에 타입 체크를 수행한다. 만약 타입 체크를 통과하지 못했다면 에러를 발생시키고 프로그램의 실행 자체를 막는다. 이를 통해 타입의 일관성을 강제함으로써 더욱 안정적인 코드의 구현을 통해 런타임에 발생하는 에러를 줄인다.

동적 타입

자바스크립트 같은 동적 타입 언어는 변수에 어떤 데이터 타입의 값이라도 자유롭게 할당할 수 있다. 다시 말해, 선언된 변수에 값을 할당할 때 데이터 타입이 결정된다. 그리고 재할당에 의해 변수의 타입은 언제든지 동적으로 변할 수 있다. 이러한 특징을 동적 타이핑이라 하며 자바스크립트를 정적 타입 언어와 구별하기 위해 동적 타입 언어라 한다.

결론

동적 타입과 정적 타입의 차이의 핵심은 '언제 변수의 데이터 타입이 결정되냐'이다. 동적 타입은 변수에 값이 할당될 때 값에 따라 변수의 데이터 타입이 결정된다. 반면 정적 타입은 변수를 선언함 과 동시에 데이터 타입을 선언한다.

더 읽기

모든 소프트웨어 아키텍처는 트레이드오프가 존재하며, 모든 애플리케이션에 적합하며 단점이 없는 도구는 없다. 동적 타입 또한 그렇다.

변수 값은 언제든지 변경될 수 있어 복잡한 프로그램에서는 변수 값을 추적하기 어렵다. 그렇기 때문에 값을 직접 확인하기 전까지는 타입을 확신할 수 없다. 이는 유연성은 높지만 신뢰성을 떨어지는 트레이드 오프를 보여준다.

이러한 이유로 안정적인 프로그램을 만들기 위해 변수를 사용할 때 주의할 사항을 다음과 같이 제시한다.

  • 변수는 꼭 필요한 경우에 한해 제한적으로 사용한다.
  • 변수의 유효 범위는 최대한 좁게 만들어 변수의 부작용을 억제해야 한다.
  • 전역 변수는 최대한 사용하지 않도록 한다.
  • 변수보다는 상수를 사용해 값의 변경을 억제한다.
  • 변수 이름은 변수의 목적이나 의미를 파악할 수 있도록 네이밍한다.

컴퓨터가 이해하는 코드는 어떤 바보도 쓸 수 있다. 하지만 훌륭한 프로그래머는 사람이 이해할 수 있는 코드를 쓴다.

0개의 댓글