Skip to main content

상수와 변수 선언

변수란?

변수는 애플리케이션이 사용하는 데이터를 저장하기 위해 예약된 컴퓨터 메모리 내의 위치입니다. 각각의 변수는 프로그래머에 의해 이름이 주어지고 값이 할당됩니다. 변수에 할당된 이름은 변수에 할당된 값을 스위프트 코드 내에서 접근하기 위해 사용되며 할당된 값을 중간에 변경할 수 있습니다.

상수란?

상수는 데이터의 값을 저장하기 위해 메모리 내에서 이름이 부여된 위치와 유사한 방식으로 작동합니다. 그러나 변수와 다르게, 상수에 할당된 값은 초기 설정 이후에 변경할 수 없습니다. 이는 프로그래밍을 처음 배울 때 상수와 변수의 사용 시기를 혼동하기 쉬운 부분입니다.

상수를 사용하는 경우는 초기에 값이 할당된 후, 그 값이 프로그램 실행 동안 일정하게 유지되어야 할 때입니다. 이렇게 하면 코드의 가독성이 향상되고, 오류의 가능성을 줄일 수 있습니다. 예를 들어, 애플리케이션 내에서 반복적으로 사용되는 특정 값을 상수로 선언하면, 그 값을 변경해야 할 경우 상수 선언부에서 한 번만 수정하면 전체 코드에 자동으로 적용되므로 유지보수가 용이해집니다. 이러한 특성 덕분에 상수는 코드 내에서 안정적이고 일관된 데이터 관리를 가능하게 합니다.

변수와 상수의 차이점

변수와 상수 마찬가지로 데이터 타입과 이름, 값을 갖지만, 상수에 한번 할당된 값은 프로그래밍 실행 중 바꿀 수 없지만 변수에 경우에는 바꿀 수 있다는 차이점이 있습니다.

선언

변수를 선언할 때는 var 키워드를 사용하며 변수를 생성할 때 값으로 초기화할 수 있습니다. 만약 어떤 변수가 초깃값 없이 선언되었다면, 옵셔널로 선언된 것입니다! (옵셔널 보러가기) 상수를 선언할 때는 let 키워드를 사용하여 선언할 수 있습니다.

var testString = "string"
let textInt = 10

애플에서는 코드의 효율성과 실행 성능의 향상을 위해서 가능하면 변수보다 상수를 사용하라고 권장합니다.

상수가 변수보다 효율적인 이유

컴파일러는 코드의 실행을 최적화하기 위해 다양한 기술을 사용합니다. let으로 선언된 상수는 값이 변경되지 않는다는 보장이 있기 때문에, 컴파일러는 이를 바탕으로 최적화를 바로 수행할 수 있습니다. 또한 상수는 값이 한 번 설정되면 변경되지 않으므로, 메모리에서 안전하게 다룰 수 있습니다. 반면, 변수는 값이 언제든지 변경될 수 있어 이를 추적하는 데 더 많은 오버헤드가 발생합니다. 마지막으로, 멀티스레드 환경에서 상수를 사용하면 동기화 이슈를 피할 수 있습니다. 값이 변하지 않기 때문에 여러 스레드에서 동시에 읽어도 문제가 발생하지 않습니다. 반면, 변수는 동기화 문제를 해결하기 위해 추가적인 메커니즘이 필요합니다.