이런 정석에는 항상 "왜!?" 라는 것이 따라 다니는데...

"전역 데이터"를 왜 최소화 해야 하는가?

전역 데이터는, 전역 네임스페이스에 있는 데이터로써,  어디에서건 접근 할 수 있다. 이 말만 들으면, 아주 좋은 자리에 줄을 선 데이터 이다. 하지만 이 "어디에서건"이 매우 복잡한 상태를 초래하게 된다.

자리가 매우 좋으니, 어디에서건 값을 수정 할 수 있게 된다. 그래서 그 값이 왜 어떻게 언제 수정되었는지 알기가 매우 힘들어 진다. 이런 것이 "아느니 모르니만 못하다" 라는 소리를 듣는 경우이다.


그렇다면, "공유 데이터" 는 무엇을 말하는 것일까?

바로 클래스의 멤버 데이터를 말한다.

이것은 또 왜 문제인가?

바로 전역 데이터 처럼 쓰여지니 문제가 똑같이 된다.


경험으로는. private 멤버 데이터를, 참조형태로 밖에서 변경하게 될 경우, ... 어디서 고쳐졌는지 모르는 상태가 되는 경우와, SOCKET을 외부에 노출하게 됨으로써, 소켓의 상태가 손쉽게 변경 될 수 있다는 점을 겪어 보았다.


총평

정석대로 코딩.

'책 정리 > C++ Coding Standards : C++ 코딩의 정석' 카테고리의 다른 글

항목 15 : const를 사용하라. ( Use const proactively. )  (0) 2009.02.21
항목 14 : 런타임 오류보다는 컴파일이나 링크 타임 오류가 낫다. ( Prefer compile- and link-time errors to run-time errors. )  (0) 2009.02.19
항목 13 : 자원은 개체가 가지게끔 하라. RAII와 스마트 포인터를 활용하라. ( Ensure resources are owned by objects. Use explicit RAII and smart pointers. )  (0) 2009.02.15
항목 12 : 안전한 공유를 위한 코딩의 시기와 방식을 결정하라. ( Know when and how to code for concurrency. )  (0) 2009.02.14
항목 11 : 정보를 숨겨라. ( Hide information. )  (0) 2009.02.13
항목 10 : 전역 데이터와 공유 데이터를 최소화하라. ( Minimize global and shared data. )  (0) 2009.02.11
항목 9 : 미리 최적화해두어야 할 부분도 있다. ( Don’t pessimize prematurely. )  (0) 2009.02.11
항목 8 : 이른 최적화를 피하라. ( Don’t optimize prematurely. )  (0) 2009.02.11
항목 7 : 적절한 규모 유지를 위해서는 '언제, 어떻게'를 아는 것이 중요하다. ( Know when and how to code for scalability. )  (0) 2009.02.11
항목 6 : 정확성, 간결성, 명확성을 먼저 생각하라. ( Correctness, simplicity, and clarity come first. )  (0) 2009.02.06
항목 5 : 하나의 엔티티에는 하나의 역활만을 부여하자. ( Give one entity one cohesive responsibility. )  (0) 2009.02.06
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 라이프코리아트위터 공유하기
  • shared
  • 카카오스토리 공유하기

댓글을 달아 주세요

">