[CR] 해컴 // @value 와 .@value의 차이 안전한 함수 만들기에 대해.
많은 분들이 .@변수를 아얘 모르거나 @변수를 혼용하여 사용합니다.
그냥 단순히 @변수만 사용하여 많은 함수들이 짜여져 있습니다.
프로그래밍적으로 @변수만 사용하는 것은 프로그램의 안정성 측면에서 매우 취약하게 합니다.
더구나 디버깅 툴도 없는 CR개발에서 변수의 추적을 할 수 없는 것은 매우 치명적일 수 있습니다.
현재 주로 사용되는 프로그램 언어에서는 .@와 같은 변수를 사용하고 필요한 경우에만 @와 같은 변수를 사용하고 있습니다.
그러나 현재 CR개발에서는 너무 @변수를 무분별하게 사용하고 있고, 이때문에
어떤 함수 로직을 사용할 때, 변수 충돌 문제가 발생한다고 볼 수 있습니다.
아래의 예를 보시면 됩니다.
(실제 사용되는 함수가 아닐수 있고 개념적으로 보시면 됩니다.)
FUNC 부모함수 {
set @age, 20;
message, 3, @age;
}
할 경우 20이 출력이 될 겁니다.
부모함수는 자식함수를 호출하고 자식함수는 아래와 같습니다.
FUNC 자식함수 {
message, 3, @age;
set @age, 10;
message, 3, @age;
return;
}
부모함수에서 자식함수를 호출합니다.
FUNC 부모함수 {
set @age, 20;
message, 3, @age;
callfunc("자식함수");
}
이렇게 한다면 출력 결과는
20
20
10
일 것입니다.
그리고
FUNC 부모함수 {
set @age, 20;
message, 3, @age;
callfunc("자식함수");
message, 3, @age;
}
부모함수에서 자식함수를 부른 후 다시 한번 @age를 출력하면
20
20
10
10
와 같습니다.
여기서 자식함수가 부모함수의 변수를 사용하고 , 부모함수의 변수를 조작하고 있습니다. 이는 분명 매우
치명적일 수 있습니다.
이는 for문에서 자주사용하는 @i, @x 등에서 문제를 발생시키곤 합니다.
현재 거의 모든 예제들이 다음과 같이 짜여져 있고, 사소한 문제부터 치명적인 문제까지
발생할 수 있는 잠재적인 문제점이 되기 때문에 이를 이해하셨다면 앞으로 .@를 쓰는 습관을 들이시길 바랍니다.
또, DR에서도 비슷하게 생각을 해주시면 좋겠습니다.

행복e 님의 최근 댓글