2014-01-05 2 views
2

Я хочу создать драгоценный камень, содержащий пользовательские rspec-сопоставления. Они предназначены для тестирования веб-сервисов, поэтому две части слова - RSpec и Webservice. Теперь, если имя драгоценного камня будет;Как назвать драгоценный камень, который зависит от драгоценного камня другого?

  • rspec-webservice
  • rspec-matchers-webservice
  • rspec_webservice

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

naming guidelines, кажется, не решить этот случай:

rspec-webservice кажется правильным, потому что я «добавление функциональности к другому драгоценному камню». Но это будет соответствовать камню, находящемуся в RSpec :: Webservice, и я не являюсь сторонником RSpec, и поэтому может возникнуть конфликт имен.

rspec-matchers-webservice - это возможность, потому что это похоже на то, как сама библиотека RSpec is organized.

rspec_webservice является безопасным вариантом, поскольку он будет просто находиться в собственном корневом пространстве имен (RSpecWebservice), и конфликты будут исключены из-за того, что система rubygems гарантирует, что это имя не может использоваться для другого драгоценного камня.

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

EDIT: Один совет, который мне дал, - это не идти ни с одним из них, а вместо этого предлагать не описательное имя. Аналогично пассажира для веб-сервера. Например. rspec-dogweather.

+0

Нет особого соглашения. Если вы создаете драгоценный камень для распространения, просто убедитесь, что имя не принято на [RubyGems] (http://rubygems.org). – zeantsoi

+2

Я бы сказал, что есть определенная конвенция: http://guides.rubygems.org/name-your-gem/ – Dogweather

ответ

1

В этом случае нет стандартного руководства. Вот несколько подходов:

Если ваш драгоценный камень предоставляет дополнительные функции для существующей библиотеки, довольно часто используется шаблон original-feature. Известные примеры:

  • RSpec рельсы
  • нетто-SSH
  • караульном RSpec

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

  • RSpec -матрицы
  • rspec-core

В этом случае обычно используется функция, встроенная в пространство имен основной библиотеки. Как вы уже упоминали, существует потенциальный риск столкновения имени.

rspec-matchers-webservice это выбор, но я не вижу rspec-matchers «компонент». Это не помешает вам использовать такой выбор. Я видел другие библиотеки, использующие другой порядок, например rspec-html-matchers, но я думаю, что rspec-matchers-foo лучше.

rspec_webservice безопаснее, но это не очень распространено.

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

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

Вы также можете обратиться к специалистам RSpec и задать им совет.

+0

Я получил этот ответ от Майрона Марстона: если ваша библиотека предназначена только для обеспечения совместимости (а не с другими функциями) , Я бы рекомендовал 'rspec-webservice_matchers' (с пространством имен RSpec :: WebserviceMatchers). Это похоже на недавно выпущенный https://github.com/rspec/rspec-collection_matchers gem. – Dogweather

+0

Прохладный, спасибо за обмен ответа. –

0

См. Name your gem в руководстве по RubyGems.

В основном:

  1. Использование подчеркивания нескольких слов
  2. Используйте дефис для расширения

Вы можете смешать подчеркивания и тире по мере необходимости.

Смежные вопросы