Code Complete 작성자는 글로벌 데이터 숨기기에 대해 무엇을 의미합니까?


25

Code Complete 2nd Edition의 섹션 6.4에는 전역 데이터 숨기기에 대한 단락이 있습니다. 제가 특히 관심을 갖는 것은 McConnell (책의 저자)이 글로벌 데이터를 숨길 때 얻을 수있는 이점의 예를 제공한다는 것입니다. 이해할 수없는 한 가지 예가 있습니다. 영어 버전의 책이 없으므로 텍스트를 번역하려고합니다.

글로벌 데이터 숨기기 (...) 프로그램을 수정하지 않고 데이터의 구조를 변경할 수 있습니다.

맥코넬은 무슨 뜻입니까? 그는 글로벌 데이터 변경에 대해 이야기하고 있습니까? 그렇다면 왜 데이터를 검색하기 위해 메소드를 사용할 때 프로그램을 수정하지 않아도 되겠습니까? 아니면 여기서 다른 것을 언급하고 있습니까?

누군가 내 혼란을 해결할 수 있다면 크게 감사하겠습니다. 예를 제공 할 수 있다면 좋을 것입니다 (예는 훌륭합니다).

답변:


44

글쓴이는 글로벌 데이터 의 구조 에 대해 이야기하고 있으며 , 그 구조를 변경하면이를 사용하는 코드에 어떤 영향을 미치는지 설명합니다.

글로벌 데이터에 직접 액세스 할 수있는 경우 데이터 구조를 변경하면이를 사용하는 모든 코드를 변경해야 할 수도 있습니다.

전역 데이터가 인터페이스 (예 : 기능 집합)를 통해서만 액세스 할 수있는 경우 구조를 변경하면 이러한 접근자를 변경하는 것만 의미합니다. 나머지 코드는 변경할 필요가 없습니다.

간단한 예로 정수 배열로 시작하는 코드가 있습니다 (예를 들어 static int[]일부 Java 클래스의 경우). 해당 배열에 전역 적으로 액세스 할 수 있으면 사람들은 배열 구문 (예 :)으로 배열을 사용하기 시작합니다 Global.cool_stuff[x] = 1;. 어떤 이유로 든 해당 배열을 컬렉션 유형 (벡터, 목록 등)으로 변경하려면 적어도 구문 적으로 유효하지 않기 때문에이 전역 데이터를 사용하는 모든 코드를 변경해야합니다.

해당 데이터가 일련의 접근 자 / 돌연변이 기능 (인터페이스 "숨겨 짐")을 통해서만 액세스 할 수 있었다면 작은 기능 세트 만 변경하면됩니다. 실제로 데이터를 사용하는 코드는 변경되지 않은 상태로 유지 될 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.