ответ

24

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

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

После того, как вы определили спецификации, вы можете использовать их для:

  • Проверьте, является ли значение в соответствии с спецификацией
  • «Conform» значения, которое дает вам разобранную и деструктурированную версию из значение
  • Объясните подробно, почему значение не соответствует спецификации к (в виде строки, на стандартный вывод, или в виде данных)
  • Повышения функциональных документов с описательными спецификациями
  • Генерировать пример данных из спецификации
  • Утверждай соответствия в развитии, но превратить их в производство
  • недействительные вызовы в развитии или теста для инструментованных функций
  • Создание и запуска на основе свойств тестов для spec'ed функции
  • Разработка тестов, которые сочетают в себе приборы и генерация тестов с гася и насмешливого Удобству

Вы можете использовать спецификации для улучшения вашего развития (путем разъяснения и документирования намерения, ловя недействительные вызовы и утверждения достоверности данных), ваше тестирования (уловы недействительных звонков, утверждают validit y, генерировать данные примера и генерировать автоматические тесты для ваших функций spec'ed) и ваше производство (используя соответствие для деструктурирования).

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

+1

Мне очень понравилось видео Стюарта Хэллоуя по спецификации Clojure: https://www.youtube.com/watch?v=nqY4nUMfus8 –

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

  • Нет связанных вопросов^_^