Есть ли польза от использования полностью квалифицированных пространств имен в разделе "Использование"?

Лучше ли полностью квалифицировать пространства имен в предложении использования? Например, одно из этих объявлений лучше другого?

uses
  ShellApi,
  Windows,
  SHFolder,
  SysUtils;

uses
  Winapi.ShellApi,
  Winapi.Windows,
  Winapi.SHFolder,
  System.SysUtils;

2 ответа

Решение

Это действительно зависит от того, что вы строите. Если это простое VCL-приложение, которым Delphi наиболее известен, то вам обычно не нужно беспокоиться об этом. Однако, если вы создаете пакет, например, с компонентами, вам необходимо четко определить, какую среду вы собираетесь использовать: VCL или FMX. Embarcadero добавил префиксы пространства имен, чтобы иметь возможность различать различные возможные решения.

Однако в большинстве сценариев . служит только визуальным представлением. Это поможет вам, программисту, определить, какие библиотеки вы используете.

Возьмите этот другой вопрос, например. Delphi IDE/Compiler не будет принимать один очень общий модуль без добавления префикса пространства имен или пространства имен в опциях проекта. Стандарт Graphics единица должна быть явно определена как Vcl.Graphicsв отличие от FMX.Graphics,

Напомним, что использование полного пространства имен удобно для многих программистов, которые приходят из других языков, где оно строго соблюдается, и не только это, но позволяет вам увидеть природу всего одним взглядом, без необходимости искать в другом месте. для получения дополнительной информации о том, что вы на самом деле используете.

РЕДАКТИРОВАТЬ

Кроме того, я только недавно увидел, что использование полностью определенных пространств имен также помогает ускорить время компиляции, потому что компилятору не нужно пытаться разрешить все пространства имен.

Основным преимуществом полностью квалифицированных имен является то, что ваш код может быть успешно скомпилирован в проекты, независимо от настроек префикса пространства имен этих проектов.

Почему это полезно? Что ж, если вы пишете код приложения, то вы, вероятно, знаете и управляете настройками префикса пространства имен проектов, которые содержат конкретную единицу. Однако, если вы пишете библиотечный код, код, предназначенный для включения в проекты вне вашего контроля, вы не можете предсказать, какими будут префиксы пространства имен в этих проектах. Если вы не полностью определяете имена модулей, тогда вы накладываете ограничение на настройки проектов любого проекта, который использует код вашей библиотеки. И библиотечный код, как ожидается, этого не сделает.

Таким образом, в итоге, для кода приложения квалификаторы пространства имен могут быть разумно опущены, если вы предпочитаете менее подробные имена. Для библиотечного кода должны использоваться полностью определенные имена, чтобы код библиотеки мог стоять отдельно.

Другие вопросы по тегам