변수의 공유?

2012. 3. 28. 22:55제2외국어/에러일지.

정확하게 기억나진 않지만, 단순한 copy와 진짜 copy라는 개념이었던가??

아무튼 단순히 변수(데이터)를 가져오는 것과 변수(데이터) 자체를 공유하는 그런 개념으로 기억한다.

상황

 전역변수를 사용하고 있었고, 해당 부분에서 전역변수의 데이터를 불러와 어떠한 처리(가공)을 한 후에 다시 전역변수로 저장하는 방식으로 소스를 구현하고 있었다.

순서

1. 전역변수 A의 데이터를 지역변수 B에 저장 ( B = A )

2. 변수 B를 가공 ( Function(B); )

3. 변수 A에 가공 된 변수 B를 저장 ( A = B )


문제점

단순히 B = A 한 후, B를 가공, A = B 를 하였다. 일반적으로 원하는 데이터를 얻었지만, 단! 어떠한 조건에 의하여 만족하지 못 한다면 순서(3) 즉 가공 된 변수 B를 A에 넣지 않은 처음 상태의 A를 반환해야 했는데 이 부분에서 문제점이 발생했다.

: 단순하게 B = A 로 데이터를 집어넣는다는 의미로 사용하였지만, 이게 진짜 copy(?) 데이터를 공유하게 되어, 어떠한 조건에 의해 B를 가공한 후에 A에 집어넣지 않았지만 A의 데이터는 이미 가공된 데이터가 들어가게 되었다.


해결책

copy라는 개념을 좀 더 공부해야겠지만, 일단은  아무리 같은 형식의 변수일지라도 무조건 '='을 통해 집어넣기 보다는 init[...] or set[...] 등의 자체 함수를 통하여 집어넣는 방식을 습관해 하자. 라는 임시 해결책을 내었다.


교훈 : 편한게 늘 빠르고, 또 정확하지는 않더라

ps. 아 생각났다... 쉘로우와 딥 개념이었지 공부 ㄱㄱ