문제

파일과 디렉토리는 다른 이름을 가진 파일과 디렉토리를 다른 종류의 사물로 구별 할 수 있기 때문에 다른 네임 스페이스를 가질 수 있으며 여전히 특정 파일을 식별하는 데 사용됩니다.

원시 필드 및 기준 필드는 원시장과 기준 필드가 동일한 이름을 가진 경우 다른 종류의 사물로 식별 될 수 있기 때문에 다른 네임 스페이스 (Java)를 가질 수 있습니다.

별도의 네임 스페이스는 이와 같이 다른 곳에서 사용됩니다. 예를 들어, Java에서는 방법을 가질 수 있습니다. exampleName() 그리고 필드 exampleName, 그리고 그들은 같은 이름을 가지고 있지만, 다른 종류의 것들로 인해 구별됩니다.

도움이 되었습니까?

해결책

나는 이것이 좋은 생각이라고 믿지 않는다. 그 이유는 파일 시스템 코드의 성능 및 단순성과 같은 것들과 관련이 있다고 생각합니다. 디렉토리 목록이 몇 가지 다른 네임 스페이스 수에 따라 2 개 또는 3 개 이상의 다른 경로를 내려야한다면 코드가 복잡해질 수 있습니다.

또한 발생할 수있는 최종 사용자 혼란을 고려하십시오. 현재 파일 확장자를 사용하여 파일 시스템에서 사용할 수있는 일종의 네임 스페이스가 있습니다. 동일한 디렉토리에 모두 file.txt 및 file.dll 및 file.exe를 가질 수 있습니다. 이러한 파일이 동시에 존재할 때 발생하는 것은 문제의 문제입니다. 이것은 바이러스 작가가 사회 공학 형태를 사용하여 잘못된 파일을 클릭 할 수있는 방법 중 하나였습니다. 디렉토리를 같은 이름의 파일과 혼동 할 수 있다고 상상해보십시오.

다른 팁

첫째,이 질문은 언어에 따라 다릅니다. 순수한 OOP 언어에서는 원자력과 화합물 요소 사이에는 차이가 없습니다. 모든 것이 대상입니다. 순수한 기능 언어로 비슷한 이유로 당신은 동일하게 기능과 변수를 가질 수 없습니다.

둘째, 다형성 작업이있는 경우 어떤 변수를 참조했는지 알 수있는 방법이 없습니다. 예를 들어, 다형성 작업으로 인해 파일 및 디렉토리에 대한 네임 스페이스가 다른 네임 스페이스를 가질 수 없습니다.

cp foo bar

CP는 파일과 듀스에서 작동하며 네임 스페이스가 다른 경우 무엇을 의미하는지 알 수있는 방법이 없습니다.

디렉토리와 파일이 반드시 그렇게 다르지는 않습니다. 둘 다 부모 디렉토리의 항목이며, 항목이 디렉토리인지 아닌지를 나타내는 플래그 만 있습니다. 디렉토리를 열고 파일 인 것처럼 디렉토리를 읽을 수 있습니다. (이 설명은 UNIX 파일 시스템보기에 편향되어 있지만 DOS/Windows보기가 거의 같은 방식으로 작동한다고 생각합니다). 모든 디렉토리에는 멤버 이름 세트가 있으며 파일 시스템에는 디렉토리에 이름이 주어진 한 멤버 만 가질 수 있다는 고유성 제약 조건이 적용됩니다.

객체 파일의 모든 기호가 단일 네임 스페이스에 있기 때문에 C로 돌아가서 필드 이름과 비교하여 Java 메소드 이름에 대해 생각합니다. 그러나 "void foo ()"함수가 엉망인 심볼 이름 ( "foo__vv"또는 무언가)에 매핑 되었기 때문에 C ++로 가능합니다. 따라서 네임 스페이스의 키는 "foo"와 메소드 "foo ()"에 대해 다르기 때문에 별도의 네임 스페이스를 가지고있는 것은 아닙니다. 키 충돌을 얻을 수 없다는 점을 감안할 때 별도의 네임 스페이스처럼 보이지만 실제로 구현되는 방식입니까?

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top