SlideShare a Scribd company logo
Первый слайд
Code ContractsDimaPaskoMurano Software Inc.
СодержаниеИстория(Eiffel, Design By Contract, Spec#)Возможности Code ContractsИспользование Code ContractsПримерыВопросыПродолжительность ~ 30-40минут
EiffelБыл создан в 1985 Бернардом МейеромТам появилась концепция Design by Contract
Design by contract (DbC) Контрактное программирование – это метод проектирования программ, предполагающий четкое специфицирование интерфейсов и описание обязанностей компонентов системы при взаимодействии друг с другом.
Design by contract (DbC)предусловия – обязательства, которые должны быть выполнены вызывающей стороной перед вызовом методапостусловия – обязательства, гарантирующиеся вызываемым методоминварианты класса – обязательства, что свойства класса будут удовлетворять определенным требованиям. Например, инвариантом для класса PositiveNumber, может быть утверждение, что хранимое число всегда больше или равно 0.
Spec#Разработка Microsoft ResearchСпециализированный язык на базе C#
Использование Code Contracts.NET Framework 3.5Необходимо подключить к проекту Microsoft.Contracts.dll.NET framework 4.0Часть Base Class LibraryНе надо дополнительных referenceКонтракты находятся в System.Diagnostics.Contracts
ВозможностиДинамическая проверкаСтатическая проверкаПоддержка абстрактных классов и интерфейсовГенерация документации
Демонстрация
По горячим следамContract.Requires(d > 0);Contract.Ensures(Contract.Result<decimal> > 0);[ContractInvariantMethod]private void ObjectInvariant(){Contract.Invariant(d> 0);}[ContractClass(typeof(IFooContract))]interface IFoo[ContractClassFor(typeof(IFoo))]class IFooContract : IFoo
ВыводыCode Contracts привносят Design By Contract в .NET мирСтатическая и динамическая проверкаПредусловияПостусловияИнварианты классаИ это просто хорошая практика, которая позволяет сделать код лучше
СсылкиCode Contracts Projecthttp://research.microsoft.com/en-us/projects/contracts/MSDN Forumhttp://social.msdn.microsoft.com/Forums/en-US/codecontracts/threadsSpec# Projecthttp://research.microsoft.com/en-us/projects/specsharp
Вопросы?

More Related Content

PPTX
Разница между кодированием и программированием - Виталий Хить
PPTX
Reactive Extensions, Rx
PPTX
Reactive Extensions
PPT
NuGet - package management for .NET
PPTX
Что такое ASP.NET MVC?
PPTX
Ideal Deployment In .NET World
PPSX
Reuters: Pictures of the Year 2016 (Part 2)
PDF
The Six Highest Performing B2B Blog Post Formats
Разница между кодированием и программированием - Виталий Хить
Reactive Extensions, Rx
Reactive Extensions
NuGet - package management for .NET
Что такое ASP.NET MVC?
Ideal Deployment In .NET World
Reuters: Pictures of the Year 2016 (Part 2)
The Six Highest Performing B2B Blog Post Formats

Similar to Code Contracts (20)

PPTX
Проектирование по контракту
PPTX
Design by Contract basics
PPTX
Design by Contract
PDF
Design by Contracts in PHP
PPTX
MSDevCon 2016 DevOps Impact on Architecture
PPTX
Разработка модуля для отладки приложений на языке ActionScript 3 в среде Visu...
PDF
Разработка в долг
PPTX
Никита Галкин "Testing in Node.js World"
PDF
Requirement modelling in software creation process
PPT
Sonar quality
PPTX
лекция №1
PDF
Encom Aurora - Александр Попов - митап на DevConf
PPTX
Dot.net building scalable java script application using react and typescript,...
PPT
Lecture 11 1
PPT
Lecture 11 1
PDF
Поддержка сайта Мегафон.ру
PPTX
ПартФорум DIRECTUM 2013 - разработка прикладных решений
PPT
9 структура компонентных приложений
PDF
SCRUMopen Developer Max Kolodezniy
PDF
Node.js for enterprise 2021 - JavaScript Fwdays 3
Проектирование по контракту
Design by Contract basics
Design by Contract
Design by Contracts in PHP
MSDevCon 2016 DevOps Impact on Architecture
Разработка модуля для отладки приложений на языке ActionScript 3 в среде Visu...
Разработка в долг
Никита Галкин "Testing in Node.js World"
Requirement modelling in software creation process
Sonar quality
лекция №1
Encom Aurora - Александр Попов - митап на DevConf
Dot.net building scalable java script application using react and typescript,...
Lecture 11 1
Lecture 11 1
Поддержка сайта Мегафон.ру
ПартФорум DIRECTUM 2013 - разработка прикладных решений
9 структура компонентных приложений
SCRUMopen Developer Max Kolodezniy
Node.js for enterprise 2021 - JavaScript Fwdays 3
Ad

Code Contracts