[소프트웨어 아키텍처] 정적 타입 코드 설계 방식이란?

정적 타입 언어로 작성된 클래스는 한마디로 설계도에 들어갈 재료와 규격이 아주 엄격하게 정해진 설계도라고 할 수 있습니다. Java, C#, C++, TypeScript 같은 언어들이 여기에 해당되며, Python과 JavaScript 같은 ‘동적 타입 언어’와 가장 큰 차이점은 코드를 실행하기 전에 데이터의 종류를 미리 확정 한다는 점 입니다.

정적 타입 언어 특징 2가지

1. 엄격한 “데이터 명찰”

클래스를 만들 때 변수나 함수가 어떤 데이터를 다룰지 명확하게 적어야 합니다.

  • 동적타입 : “그냥 a라는 상자에 뭐든 담아.”(숫자가 들어올지 문자가 들어올지 모름)
  • 정적타입 : “age라는 상자에 무조건 정수(int)만 담아. 문자를 절대 안돼.”

2.실행 전 검사

코드를 작성하고 저장하는 순간(또는 빌드할때) 컴퓨터가 미리 검사를 합니다. 만약 정해진 규칙에 맞지 않는 데이터를 넣으려고 하면 아예 실행조차 시켜주지 않고(빨간 줄)를 띄웁니다.

샘플 코드

동적타입

class Bill:
    def set_amount(self, money):
        self.amount = money 
        # 'money'에 숫자 1000이 오든, 문자 "천원"이 오든 일단 실행됨.
        # 나중에 계산할 때 에러가 터질 수 있음.

정적타입

public class Bill {
    // 'money'는 반드시 정수(int)여야 한다고 '강제'함
    public void setAmount(int money) {
        this.amount = money;
    }
}
// setAmount("천원"); -> 이 코드는 아예 컴파일 에러가 발생해서 실행 불가능.

정적 타입 코드 방식 장점

1.안전성

다른 형식 데이터 타입이 들어가는 것을 코딩 단계에서 부터 원천 봉쇄 합니다.

2.명확한 문서와

코드를 읽을때 int amount라고 적혀 있으면 “아, 이건 무조건 숫자구나”라고 바로 알 수 있어서 별도의 설명서가 덜 필요 합니다.

3.리펙토링 용이성

나중에 구조를 뜯어 고칠때, 데이터 타입이 안 맞으면 컴퓨터가 바로 알려주기 때문에 수정이 훨씬 용이 합니다.

관련 글 보기