Об использовании утверждённых глаголов в PowerShell


Как известно в PowerShell есть список утверждённых глаголов, рекомендованных для использования в именах командлетов и функций. Этот список можно получить с помощью командлета Get-Verb.

Использование утверждённых глаголов упрощает поиск и понимание назначения командлетов и функций.

Насколько эти рекомендации выполняются? Собрать общую статистику невозможно. Но  один из ведущих участников команды разработчиков Jason Shirk привёл такой пример относительно имён модулей:


$verbs = (Get-Verb).Verb; Find-Module |
? { $modName = $_.Name; $verbs |
? { $modName.StartsWith($_) } }

Этот код ищет в Интернет репозитории все модули, имена которых начинаются с утвержденного глагола. Получается около 100 модулей, в которых авторы использовали утверждённые глаголы (скорее всего) не по назначению, вводя в заблуждение пользователей или осложняя поиск необходимых модулей.

Как заключил Jason Shirk, удивительно, как много нарушений рекомендованной практики!

Будьте более аккуратны при именовании модулей, особенно если вы собираетесь опубликовать их в репозитории.

Реклама

комментариев 5

  1. 1.Но вот ведь это не относится к именам модулей, для примера можно посмотреть на

    Get-Module -ListAvailable
    

    2.Глагол — это важно, еще желательно наличие дефиса после него.

    Поэтому предлагаю вот такой скрипт:

    Find-Script | Group-Object {($_.Name -replace "-.+") -in (Get-Verb).Verb}
    
    • Наблюдение Джеймса было о том, что удивительно, как часто люди используют имена для иных сущностей похожие на утверждённый шаблон для именования командлетов. Вывод: не следует так делать. Не более того. Никаких глубоких изысканий. Если вы можете повлиять на исправление имени какого-то модуля, то сделайте это. Не более того.

      • Я о другом. Я о том, что модуль не обязан начинаться с глагола! Он имеет другие требования к именованию. А мой скрипт показывает статистику именно по скриптам, которые, конечно, должны начинаться с глагола.

  2. Илья, привет! Я что-то не понял: Не надо назвывать модули по такому принципу, как мы называем функции и командлеты? А как тогда? Где почитать про правила их именования?

    • Да, так не следует поступать. Я бы ориентировался на область применения. Например, модуль ActiveDirectory. Если его назвать GetAD, то это будет плохой пример.
      Можно еще рассматривать модуль как пространство имён в C# — namespace. Пространства имён никогда не совпадают по имени с классами и другими объектами. Они просто объединяют разные сущности одной области применения.

Добавить комментарий

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

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s

%d такие блоггеры, как: