MyLib.MyUtils.pas과 같은 긴 단위 파일 이름을 사용할 때 실질적인 이점이 있습니까 아니면 단위 이름 접두사입니까?델파이의 네임 스페이스
답변
네임 스페이스, 모든 식별자와 같은 구성하기위한 것입니다.
그래서 프로젝트를 사용하면 더 나은 방법으로 프로젝트를 구성하는 경우에만 이점이 있습니다. 이 매우 주관적인 문제 (가장 간단한 명명 규칙조차도 '전쟁'이있었습니다!), 정말 대답하기가 불가능합니다.
Here is some documentation 델파이에서 네임 스페이스가 작동하는 방식.
델파이에서는 '실제'네임 스페이스 (두 개 이상의 일반 DLL이 동일한 네임 스페이스에 기여할 수 있으며 .NET 환경에서는 네임 스페이스가 작동하는 방식입니다.)는 BPL 방식이 될 수 있지만 '일반 DLL'과 동일하지 않습니다. 이것은 Delphi 자체의 제한이 아니라 Windows의 기본 DLL이 작동하는 방식입니다.
--jeroen
나는이 질문에 대한 의견과 분명한 오해에 대한 응답으로이 답변을 편집했습니다.
내가 제안한 것과 같이 유닛 이름을 사용하는 것에서 볼 수있는 유일한 실용적인 이점은 IDE가 "네임 스페이스"접두사없이보다 나은 방법으로 유닛을 정렬한다는 것입니다. 대신 다른 폴더를 사용하는 것이 좋습니다.
경우에 따라 이름 충돌 때문에 이해가 될 수 있습니다. 예를 들어 단위가 MyLib.Utils
이고 단위가 MyOtherLib.Utils
일 수 있습니다. 이는 실제로 IDE와 혼자서 혼란을 피할 수 있습니다.
당신은 정적 클래스 메소드와 추상 클래스를 사용하여 네임 스페이스를 시뮬레이션 할 수 있습니다 :
type
Utils = class abstract
class procedure Beep; static;
end;
...
Utils.Beep;
Serg가 맞다고 이해하면 그는 단위 이름 안의 ** 점 **을 묻습니다. –
질문이 매우 자세하지 않기 때문에 옳을 수도 있습니다. 나는이 가능성을 반영하기 위해 나의 대답을 편집했다. – jpfollenius
물론 "점이 찍힌"단위 이름에 관한 질문입니다.늘어나는만큼 내가 점은 단위 이름 접두사와 다른 것의 또 다른 심볼 일 뿐이라는 것을 이해합니다. 예를 들어, "MyLib 사용"을 작성하여 MyLib.MyUtils를 사용하거나 다른 방식으로 "MyLib"식별자를 사용할 수는 없습니다. – kludg
참조 : 델파이
Why does Delphi (dcc32.exe) have an option to set a “Namespace search path”?
네임 스페이스가 컴파일러에 의해 지원되므로 단위 이름에 점은 특별한 의미가 있습니다. dcc32.exe 옵션이 올바르게 설정된 경우 파일의 정규화 된 이름을 사용하거나 파일 이름에 '바로 가기'스타일을 사용할 수 있습니다.
그래서 당신은 또한
uses
MyBestTools;
전체 수식 명을 피하기 위해 쓸 수
uses
MyCompany.MyProject.MyLibrary.MyBestTools;
면책 조항 : 현재이 모든 이론이다 그러나 나는 가까운 미래 IIN 일부 프로젝트에 네임 스페이스의 사용을 만들 것입니다
더 나은 IDE 지원을 받으려면 QualityCentral에서이 추천 제안에 대해 투표하십시오 :
IDE (Delphi 2009)에서 동일한 옵션을 찾았습니다 : 프로젝트/옵션/Delphi 컴파일러/기본 네임 스페이스, 네임 스페이스 접두어 – kludg
Delphi XE7 IDE에서 "Unit scope names"라고 입력했습니다 – SoftDeveloper
@SoftDeveloper는 XE7에 여전히 ' NS
- 1. 네임 스페이스
- 2. 네임 스페이스 ++
- 3. 네임 스페이스
- 4. 네임 스페이스
- 5. C# .NET 네임 스페이스 이름이 네임 스페이스 오류에 없습니다. 로컬 네임 스페이스 지시문을 벗어난 경우에만 - 왜?
- 6. Doxygen/C++ : 네임 스페이스 목록의 전역 네임 스페이스
- 7. 요소 속성 네임 스페이스 대신 XSLT 루트 태그 네임 스페이스
- 8. 전역으로 네임 스페이스 참조?
- 9. C#의 네임 스페이스
- 10. IInvokeProvider 네임 스페이스?
- 11. App.config 네임 스페이스 문제
- 12. 네임 스페이스 문제 사용
- 13. XJC 생성 네임 스페이스
- 14. 노드의 네임 스페이스 확인
- 15. C++ 네임 스페이스 문제
- 16. 네임 스페이스 사용법
- 17. C# 네임 스페이스 질문
- 18. jQuery의 하위 네임 스페이스
- 19. .Net의 내부 네임 스페이스?
- 20. 봄 네임 스페이스 오류
- 21. 네임 스페이스 오염이없는 ResizeStop
- 22. JavaScript 여러 네임 스페이스
- 23. STI + 네임 스페이스
- 24. XML 스키마/네임 스페이스
- 25. UserControl 네임 스페이스 문제점
- 26. 네임 스페이스 이름 지정
- 27. ascx의 네임 스페이스 참조
- 28. Javascript 네임 스페이스 충돌
- 29. 네임 스페이스 문제
- 30. C++, 다른 네임 스페이스
+1 흥미로운 링크와 비교하십시오. 나는 델파이에 "공식적인 네임 스페이스"가 있다는 것을 몰랐다. – jpfollenius
문서 기사가 Delphi.NET (dcuil 파일 등) 용으로 작성된 것 같습니다. Embarcadero는 Delphi for Win32 네임 스페이스를 문서화하기 위해이를 편집해야합니다. – kludg
+1 링크를 주셔서 감사합니다 ... 지금이 네임 스페이스 접두사를 지원하는 버전의 참조를 찾고 있습니다 ... –