변수가 없으면 안돼요?


더 편하게 보시려면 여기를 눌러주세요.


문법을 공부하면 아마도 가장먼저 배우는 것들이 변수일 것 입니다. 우리는 변수를 배우고 나서 어디에 그리고 왜 써야하는지 고민하기 시작합니다. 그렇기에 가장먼저 배운다는 것이 이유없이 가야할 필요는 없습니다.

개발을 할 때 변수가 없으면 어떤 일들이 일어날 지 그래서 변수로 해결하고 있는 문제들이 알아봅시다.

그리고 납득을 하지 못한다면, 변수를 건너뛰고 공부합시다!

데이터 관리

데이트를 관리해야하는 방법과 그 이유를 아주 쉬운 일상생활에서 예시로 찾아봅시다.

레시피를 따라 요리를 한다고 생각해봅시다. 레시피에는 다양한 재료와 그 양이 명시되어 있습니다. 이 재료들과 그 양은 "변수"와 같습니다. 만약 레시피를 따라 요리를 하다가 손님의 수가 늘어났다고 가정해봅시다. 재료의 양(변수)을 조절함으로써 쉽게 더 많은 양의 음식을 만들 수 있습니다. 반면, 재료의 양을 고정된 상수로 다루면, 변화하는 상황에 유연하게 대처하기 어렵습니다.

이 처럼 한 가지의 상황만 대처한다면은 변수가 필요하지 않습니다. 그래서 처음부터 변수를 넣기 보다는 필요가 없다면 고정된 값을 쓰다가 여러가지 상황에 대응하면서 필요한 부분에 변수를 넣으면 됩니다.

이제는 좀 더 코드로 예제를 만들어 보겠습니다.

print("직사각형의 면적은 \(4*8)입니다.")

위의 예제는 면적을 구하는 코드이고 32라는 면적을 계산합니다. 우리의 가로와 세로 변화에 대응 할 필요가 없다면 변수를 쓰지 않아도 됩니다.

let length = 4
let width = 8
let area = length * width
print("직사각형의 면적은 \(area)입니다.")

이렇게 변수, 저장하는 공간에 다른 데이터들이 들어온다면 대응을 하기위해 변수를 써서 계산하면됩니다.

코드의 재사용성

레시피를 생각해보세요. 레시피는 다양한 재료와 그 양, 조리 방법을 제공합니다. 이 레시피는 "재사용 가능한 코드"와 같습니다. 만약 당신이 다양한 사람들을 위해 같은 요리를 여러 번 해야한다면, 레시피를 참조하여 일관된 결과를 얻을 수 있습니다. 재료의 양이나 종류를 "변수"로 생각할 수 있으며, 이를 조절함으로써 다양한 상황에 맞게 요리를 할 수 있습니다.

아주 작은 코드의 재사용이지만 실제로 많은 부분에서 필요합니다. 코드로 본다면 어떤 편리한 부분이 있는지 확인할 수 있습니다.

print("직사각형의 면적은 \(4*8)입니다.")
print("\(4*8)가 최대 넓이입니다.")
print("절반의 크기는 \(4*8/2)입니다.")

위 코드는 재사용성이 떨어집니다. 그래서 또 다른 면적을 출력하는 문장을 써야한다면 우리는 또 다시 \(4*8)를 가져와야 합니다. 지금은 문제가 없어보입니다. 사각형의 너비가 4에서 3으로 줄어들면 우리는 3군데의 수정을 해야합니다. 만약 실수로 하나를 빠트린다면 문제가 생길 것 입니다.

let length = 4
let width = 8
let area = length * width
print("직사각형의 면적은 \(area)입니다.")
print("\(area)가 최대 넓이입니다.")
print("절반의 크기는 \(area/2)입니다.")

이렇게 작성하면 길이가 4에서 3이 되었을 때 length를 수정하면 됩니다. 또한 넓이가 필요한 부분은 area 를 불러와쓰면 되기때문에 재사용성이 처음 코드보다는 높습니다.

가독성

물건을 수납할 때 아무렇게나 담는 것 보다는 담긴 곳에 이름을 붙여 놓으면 다음에 찾기가 쉽습니다. 그리고 잘 못 된 이름을 붙여 놓으면 오히려 물건을 찾기가 어렵습니다. 이렇게 잘 붙여진 이름이 주는 가독성을 일상생활에서도 알 수 있습니다.

정보에 명확한 이름을 붙여서 가독성이 높아진 경우를 살펴보겠습니다.

let temperature = 25
let temperature2 = (temperature * 9 / 5) + 32
print("\(temperature)°C is equal to \(temperature2)°F")  // 25°C is equal to 77°F

이렇게 변수에 이름을 잘 못 붙여놓으면 읽기가 굉장히 힘듭니다. 온도가 두개인데 어느 것이 섭씨와 화씨인지 구분하기가 어렵습니다. 그래서 이름을 잘 붙여 놓으면 코드를 읽기가 편해집니다.

let celsiusTemperature = 25
let fahrenheitTemperature = (celsiusTemperature * 9 / 5) + 32
print("\(celsiusTemperature)°C is equal to \(fahrenheitTemperature)°F")  // 25°C is equal to 77°F

실제 출력되는 값은 25이지만 우리의 눈에는 섭씨온도가 오는 자리가 잘 보이기 때문에 이 방법을 활용해 코드의 가독성을 높일 수 있습니다.

최종적으로 정리를 해보겠습니다. 변수를 사용하지 않으면, 모든 데이터를 상수(constant)나 리터럴 값으로 직접 적어야 합니다. 이는 데이터를 업데이트하거나 변경하기 어렵게 만들고, 코드의 유지보수를 힘들게 합니다. 그리고 가독성 또한 좋아집니다.

댓글

이 블로그의 인기 게시물

[IOS] AppDelegate는 뭐하는 녀석이지?

[git] git의 upstream과 origin 헷갈리는 사람 손!

[git] Github 이슈 라벨(issue labels)