Какой формат должен иметь константа версии моего проекта - PullRequest
1 голос
/ 23 сентября 2011

Я видел много вещей

Foo::VERSION::STRING
Foo::VERSION
Foo::Version

какие-либо предложения, что является лучшим / наиболее распространенным по умолчанию?

1 Ответ

2 голосов
/ 24 сентября 2011

Прежде всего, Foo::Version мне кажется неправильным. Это подразумевает, что версия является классом или модулем, но должна быть константой, как первые два из ваших примеров.

Кроме того, здесь нет золотого правила. Вот несколько примеров:

Рельсы

    Rails::VERSION::STRING

(Примечание: модуль VERSION со всеми прописными буквами.)

SimpleForm

    SimpleForm::VERSION

Nokogiri

    Nokogiri::VERSION

RSpec

    RSpec::Version::STRING

(Обратите внимание, модуль Version, сравните с Rails выше.)

Огурцы

    Cucumber::VERSION

SimpleForm

    SimpleForm::VERSION

Большинство из вышеперечисленных имеют свою версию, определенную в файле lib/[name]/version.rb, за исключением Rails с version.rb в корне проекта и Cucumber, который закопал ее в файле lib/cucumber/platform.rb.

Также обратите внимание, что все вышеперечисленное использует String s в качестве версии. (Rails даже объединяет MAJOR, MINOR, TINY и PRE константы в одну VERSION константу.) Это позволяет легко сравнивать версии:

    "1.2.3" > "0.4.2"  # => true
    "1.2.3" > "1.2.2"  # => true
    "1.2.3" > "1.2"    # => true

Однако такое сравнение не выполняется, когда вы сталкиваетесь с двузначными числами для уровня патча:

    "1.2.3" > "1.2.12" # => true

Для меня, определение Foo::VERSION - ваша лучшая ставка, определите ее в lib/foo/version.rb и установите значение String.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...