Каковы ограничения на номера версий Cocoa Framework? - PullRequest
2 голосов
/ 30 апреля 2010

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

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

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

  • Есть ли ограничение на тип числа, которое может быть представлено (uint? Long?)
  • Это должен быть номер? Может ли это быть строка?
  • Должны ли цифры быть последовательными?
  • Существует ли стандартный способ действий в этой ситуации?

1 Ответ

4 голосов
/ 30 апреля 2010

Насколько я понимаю, причина этого требования в том, что вы можете иметь проверку макросов, например:

#if FRAMEWORKNAME_VERSION >= 123456
    // some stuff
#else
    // some other stuff
#endif

Числа не обязательно должны быть последовательными, и предложенная вами схема вполне разумна:

#define MAKE_VERSION(MAJOR,MINOR,PATCH) ((MAJOR*10000)+(MINOR*100)+PATCH)

Я бы также предложил, чтобы помимо определения версии вы также определяли константы для каждой версии ...

#define FRAMEWORKNAME_VERSION_1_0_0 MAKE_VERSION(1,0,0)
#define FRAMEWORKNAME_VERSION_1_0_1 MAKE_VERSION(1,0,1)

Таким образом, вы можете проверить несколькими способами ... либо:

#if FRAMEWORKNAME_VERSION >= MAKE_VERSION(1,0,1)
    // 1.0.1 and later
#else
    // Before 1.0.1
#endif

Или:

#if defined(FRAMEWORKNAME_VERSION_1_0_1)
    // 1.0.1 and later
#else
    // Before 1.0.1
#endif

Ключевыми требованиями, которые вы должны удовлетворять, являются:

  • Числа монотонно растут
  • Числа предсказуемы
  • Числа легко сравнимы

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

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