Pull to refresh
  • by relevance
  • by date
  • by rating

Google упрощает контрактное программирование

Java *
Google выпустил открытую библиотеку Contracts for Java, которая упрощает реализацию методов контрактного программирования в Java. С помощью библиотеки Contracts for Java предусловия, постусловия и инварианты можно добавлять в Java как булевые выражения внутри аннотаций.

Как сказано в официальном анонсе, библиотека разработана двумя программистами Google в свободное от основной работы время (20% на личные проекты) и основана на Modern Jass и сделана под впечатлением от языка Эйфель, в котором впервые был реализован метод контрактного программирования.
Читать дальше →
Total votes 49: ↑39 and ↓10 +29
Views 2.3K
Comments 36

Tip: использование ReSharper совместно с Microsoft CodeContracts

Lumber room
Sandbox
Решил написать небольшую заметку после пары часов разбирательств — в сети ответы находятся не сразу, кусочками и на английском.

Про Microsoft CodeContracts на Хабре уже писали, это библиотека и инструментарий для Visual Studio, позволяющие использовать в C# элементы «контрактного программирования».

Мы начали использовать CodeContracts (далее — просто «контракты») в своих проектах относительно недавно, и, в целом, довольны, хоть и получили дополнительных несколько секунд ожидания к времени компиляции.

Ну, и, конечно, мы используем ReSharper, который в дополнительном представлении не нуждается.

Но есть пара нюансов, заключающихся в том, что для эффективной работы эти два инструмента нужно немножко подружить между собой.
Читать дальше →
Total votes 6: ↑6 and ↓0 +6
Views 342
Comments 3

Контрактное программирование в PHP

Website development *PHP *
Контрактное программирование В реальной жизни мы повсюду сталкиваемся с различными контрактами: при устройстве на работу, при выполнении работ, при подписании взаимных соглашений и многими другими. Юридическая сила контрактов гарантирует нам защиту интересов и не допускает их нарушения без последствий, что дает нам уверенность в том, что те пункты, которые описаны в контракте — будут выполнены. Эта уверенность помогает нам планировать время, планировать расходы, а также планировать необходимые ресурсы. А что если и программный код будет описываться контрактами? Интересно? Тогда добро пожаловать под кат!
Читать дальше →
Total votes 55: ↑43 and ↓12 +31
Views 29K
Comments 63

Контракты в D

Website development *Programming *Designing and refactoring *D *
Tutorial
Доброго времени суток, хабр!

Сегодня я хочу рассказать Вам о контрактном программировании и его реализации в D. Это очень интересная концепция построения API. Смысл заключается в формальной спецификации работы функции или класса на уровне кода, а не комментария.

Пример подобной спецификации для функции:
Читать дальше →
Total votes 18: ↑17 and ↓1 +16
Views 7.9K
Comments 3

Осторожно, истинные контракты классов могут отличаться от формальных

Website development *Designing and refactoring *ООP *
Вкратце, в этой статье речь пойдёт о правиле наследования Лисков, о различии контрактов NotifyCollectionChangedAction.Reset в версиях .NET Framework 4 и .NET Framework 4.5, и о том, какой из этих двух контрактов истинный, а какой — ошибочный.


Читать дальше →
Total votes 14: ↑11 and ↓3 +8
Views 9K
Comments 16

Почему люди не используют формальные методы?

Programming *Mathematics *
Translation
На Software Engineering Stack Exchange я увидел такой вопрос: «Что мешает широкому внедрению формальных методов?» Вопрос был закрыт как предвзятый, а большинство ответов представляли собой комментарии типа «Слишком дорого!!!» или «Сайт — это не самолёт!!!» В каком-то смысле это верно, но мало что объясняет. Я написал эту статью, чтобы дать более широкую историческую картину формальных методов (FM), почему они на самом деле не используются и что мы делаем для исправления ситуации.

Прежде чем начать, нужно сформулировать некоторые условия. На самом деле существует не так много формальных методов: всего несколько крошечных групп. Это означает, что разные группы по-разному применяют термины. В широком смысле есть две группы формальных методов: формальная спецификация изучает запись точных, однозначных спецификаций, а формальная проверка — методы доказательства. Сюда входят и код, и абстрактные системы. Мало того, что мы используем разные термины для кода и систем, мы часто используем разные инструменты для их верификации. Чтобы ещё больше всё запутать, если кто-то говорит, что создаёт формальную спецификацию, обычно это означает и верификацию дизайна. А если кто-то говорит, что делает формальную верификацию, обычно это относится к верификации кода.
Читать дальше →
Total votes 35: ↑35 and ↓0 +35
Views 12K
Comments 18

Пробуем контрактное программирование С++20 уже сейчас

Programming *C++ *
Tutorial


В С++20 появилось контрактное программирование. На текущий момент ни один компилятор ещё не реализовал поддержку этой возможности.


Но есть способ уже сейчас попробовать использовать контракты из C++20, так как это описано в стандарте.

Заинтересовавшихся прошу под кат
Total votes 61: ↑60 and ↓1 +59
Views 28K
Comments 53

История одного удачного применения SRP в Legacy проекте

System Programming *
Sandbox
В этой статье я расскажу на примере эволюции своего проекта историю перехода и видение контрактного программирования.

Сначала хотел назвать статью — «Контрактное программирование», постольку поскольку используемый подход заключается в разделении всей бизнес-логики на дата-контракты и сервис-клиенты использующие эти контракты и взаимодействующие друг с другом через эти структуры данных, таким образом, что одна и та же структура успешно обрабатывается в разных сервисах.

Что-то я буду описывать своим языком.
Читать дальше →
Total votes 10: ↑9 and ↓1 +8
Views 1.1K
Comments 5