Какое наименование рекомендуется использовать для областей действия в Delphi XE2 и далее? - PullRequest
0 голосов
/ 03 января 2012

С появлением Delphi XE2 появились такие модули, как Xml.Internal.AdomCore_4_3 или System.StrUtils.

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

  1. Должно ли это быть

    • com.company.project.Security.Compression.ZLib.pas как в Java

    • System.Security.Compression.ZLib.pas как в .NET

    • или что-то еще?

  2. Должен ли я поместить свои файлы в каталог strcuture, как этот

    • System\Security\Compression\System.Security.Compression.ZLib.pas

    • или просто System.Security.Compression.ZLib.pas в корневой папке?

Глядя на то, как Embarcadero организовал свои подразделения, у меня осталось впечатление, что они просто сохранили структуру каталогов, как в Delphi 5/6/7 /.../ XE

Пожалуйста, сообщите.

Ответы [ 2 ]

4 голосов
/ 03 января 2012

Я считаю, что каждый должен следить за своими подразделениями.(Вам не нужно делать это только в том случае, если вы являетесь сторонним поставщиком компонентов - так как вы хотите уменьшить конфликт имен на любых используемых вами внешних блоках.) Обозначая ваши юниты, вы проделываете очень долгий путь, чтобы предотвратить именование юнитов.проблемы.

Я настоятельно рекомендую использовать глобальный префикс, который вы будете использовать для всех внутренних модулей.Вы можете использовать сокращенную форму названия вашей компании или ваше полное имя в качестве полностью ваших предпочтений.Я бы порекомендовал просто что-то читаемое и легкое для ввода.

Если вы работаете в нескольких крупных проектах, за ними будут следовать имена, относящиеся к конкретному проекту, например Acme.Widgets.SlicerUtils.pas для продукта / проекта Widgets и Acme.Wonkers.WippleFactory.pas для продукта Wonkers..

Независимо от наименования, это должно сильно зависеть от того, как вы версуете свои проекты и управляете исходным кодом.Вы хотите иметь возможность легко настроить сборку для версии 1.2.1.0 проекта Widgets, чтобы включить все модули, связанные с этой конкретной сборкой.(1.2.1.0 Виджеты могут включать в себя явную версию 1.5.3.0 системной библиотеки). Это должно быть легко понято всеми разработчиками и, по-видимому, управляемо.Чтобы начать работу над 1.2.1.1 проекта виджетов, вам необходимо выполнить операции одним щелчком мыши.

Ответ на вопрос подкаталога по общему правилу состоит в том, чтобы разделить управляемые версиями проекты в свои собственные подкаталоги.Поэтому, если ваша библиотека Acme.System.Security.Compression контролируется версией отдельно, чем Acme.System.Security.Auth, то у вас будет структура подкаталога root \ System \ Compression ... но, скорее всего, у вас просто будет Acme.Widgets.System)

Надеюсь, это немного поможет.

3 голосов
/ 03 января 2012

В отличие от Java и .NET "." в новой области имен файлов не предоставляет функциональности во время выполнения или во время разработки. System.StrUtils.pas можно было бы так же легко назвать System_StrUtils.pas или SystemXStrUtils.pas, и у нас была бы точно такая же ситуация, как и сейчас.

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

Даже тогда я бы не назвал ваши юниты System.MyUnit.pas, так как считаю, что префикс должен быть ограничен официальными юнитами Delphi System. Если вам действительно нужно принять это новое соглашение (лично я не думаю, что буду), я бы назвал ваши отряды примерно так:

MyCompany.UnitName.pas

или

MyComponentLib.UnitName.pas

Я не вижу необходимости добавлять VCL или FMX в имена, если вы не выпускаете библиотеку с двумя фреймворками.

...