в

Беларусь

Belarusian .NET User Group

.NET в Беларуси

Spec# и контракты

Я уже писал о том, что в .NET 4.0 появится библиотека для поддержки контрактов. Этот проект вырос из проекта Microsoft Research – Spec#.

По понятным причинам в мейнстрим весь Spec# не пойдет, тем не менее интересно взглянуть, что же там такого, что позволит нам писать более надежные программы.

 

 

Одна полезных фич, в том, что Spec# умеет выводить контракты из стандартной библиотеки дотнета. 

image

Обратите внимание на tooltip.

image

 

Переменная home на первом скриншоте может быть null, что не учтено при вызове метода на втором скриншоте.

Исправим положение, продекларировав, что мы ожидаем переменную окружения HOME.

в синтаксисе Spec# это будет выглядеть так

string! home = Environment.GetEnvironmentVariable("HOME");

В этом случае мы получаем предупреждение в том месте, где оно и должно быть

image

Обработав такое предупреждение (простой проверкой на null), мы можем быть уверены в том, что дальше переменная окружения HOME реально существует.

 

 

 

Вот такой вот мощный инструмент можно применять для повышения качества кода. К сожалению, в .NET 4.0 не будет расширений языка, а все вызовы библиотеки придется делать вручную, в том числе и контракты декларировать.

Вот такая вот эволюция research – mainstream :-(

Опубликовано ноя 24 2008, 05:00 от dr.gigabit
Теги :

Комментарии:

Пожалуйста, войдите с систему, используя свою учетную запись либо зарегистрируйтесь, если вы впервые на нашем сайте.
Нет Комментариев

Сейчас на сайте

Community Server (Commercial Edition)