Прецизионная Java с контрактами Google


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

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

Google, похоже, хорошо справляется со своим правилом 20%, которое позволяет сотрудникам тратить 20% своего рабочего времени на проекты по собственному выбору. Последняя награда, полученная от свободы иметь энтузиазм в отношении программного обеспечения, — это контракты на Java, потенциально радикальный шаг.

Возможно, вы не знаете о контрактном подходе к программированию, потому что это методология, которая в последнее время не получила большой огласки, и на самом деле ее на практике отстаивает только язык Eiffel, который, хотя и является прекрасным языком, вряд ли широко используется и даже не входит в топ — пятьдесят языковых рейтингов TIOBE. (Термин «Дизайн по контракту» также является зарегистрированной торговой маркой Eiffel Software.)

Контракты для Java-это инструмент с открытым исходным кодом, который добавляет некоторые аннотации, которые с помощью аргумента JVM проверяются во время выполнения, чтобы убедиться, что код соблюдает контракт. Новые аннотации-это @Requires, @Ensures, @ThrowEnsures и @Invariant в комплекте с логическими выражениями, которые задают условие. Контракты наследуются от интерфейсов и классов, что делает их более постоянными. 

Чтобы показать вам, как выглядит контракт, пример с веб-страницы «Контракты для Java» хорошо справляется с этой задачей:

время интерфейса { … @Обеспечивает({ «результат >= 0», «результат <= 23" }) int getHour(); @Требует({ "h >= 0″, «h <= 23" }) @Гарантирует("getHour() == h") void setHour(int h); ... } Обратите внимание, что совершенно очевидно, что все это означает и что обеспечивает контракт. Однако вам нужно ознакомиться с некоторыми принципами проектирования по контракту, потому что это не то же самое, что проверка данных во время выполнения, которая должна быть встроена в код. Любая разница в поведении между запуском кода с контрактами времени выполнения и без них сама по себе рассматривается как ошибка. Существуют другие схемы аннотаций, помогающие решить аналогичные проблемы в Java (например, JSR 305) и реализации контрактов на других языках. Самые большие проблемы с этим контрактом для Java-это его сокращенное название cofoja, которое звучит как медицинская жалоба, и тот факт, что у него нет встроенной поддержки IDE.  Как использовать его с Eclipse, было подробно описано в блоге Фабиана Стига (Использование контрактов с Eclipse), но простым в установке расширением было бы логичным следующим шагом.


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