Пространства имен в Delphi

Есть ли любые практические преимущества в использовании долгих имен файлов единицы как MyLib. MyUtils.pas или это являются просто своего рода префиксом имени единицы?

9
задан jpfollenius 20 January 2010 в 10:40
поделиться

3 ответа

пространства имен, как и все идентификаторы, предназначены для организации.

Так что используя их, только преимущества, если ваш проект будет организован лучше. Это высоко субъективное дело (произошло «войны» даже самых простых соглашений об именах!), Так что невозможно действительно ответить.

Вот некоторая документация на том, как работают пространства имен в Delphi.

Обратите внимание, что «True» пространства имен (где может вносить более одной общих DLL DLL; это то же самое пространство имен; это то, как функция пространств имен в мире .NET) невозможна в Delphi: вы могли бы пойти на BYPLE, но это не то же, что и «общая DLL». Это не ограничение самого дельфи, а то, как родные DLL в работе Windows «работа».

- jereen

14
ответ дан 4 December 2019 в 12:18
поделиться

См.:

Почему Delphi (DCC32.exe) имеет возможность установить «Путь поиска пространства имен»?

пространства имен в Delphi поддерживаются компилятором, поэтому точка в именах устройства имеет специальную смысл. Вы можете использовать полное имя файла, или вы можете использовать «ярлык» стиль файла, если параметр DCC32.exe установлен правильно.

Итак, вы также можете написать

uses
  MyBestTools;

, чтобы избежать полного квалификации

uses
  MyCompany.MyProject.MyLibrary.MyBestTools;

Отказ от ответственности: в настоящее время это все теория, но я буду использовать пространства имен в некоторых проектах, которые он в ближайшем будущем

для еще лучшей поддержки IDE Не стесняйтесь голосовать в качественно-концентране для этой функции:

визуализируют иерархию пространств имен единицы в IDE

2
ответ дан 4 December 2019 в 12:18
поделиться

Я отредактировал этот ответ в ответ на комментарии и мое очевидное недопонимание вопроса.

Единственная практическая выгода, которую я вижу, используя имена единиц, как вы предлагаете, заключается в том, что IDE будет сортировать единицы в лучшую сторону, чем без префикса «пространства имен». Я бы предпочел использовать разные папки вместо этого.

В некоторых случаях это может иметь смысл - из-за именных столкновений. Вы можете, например, иметь единицу mylib.utils и единица myOtherlib.utils Это действительно может избежать некоторой путаницы (как для IDE, так и для себя).

Вы также можете моделировать пространство имен, используя абстрактный класс со статическими методами класса:

type
  Utils = class abstract
    class procedure Beep; static;
  end;
...
Utils.Beep;   
1
ответ дан 4 December 2019 в 12:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: