Контракты не переименовывать expects/ensures на pre/post

Игорь Шаповал
Игорь Шаповал

EWG на последнем заседании по С++20 в Коне одобрила на переименовывание контрактов для предусловия и постусловия expects/ensures на pre/post.

Evolution Working Group (EWG) 


At the last meeting, EWG finalized the feature set for C++20. At Kona, we focused on finalizing those features:

  • Contracts: We worked on refining the feature. The only change this meeting was renaming expects/ensures to pre/post.

Название pre/post не говорят что это предусловия или постусловия. Может быть уже лучше precond/postcond.

Название expects/ensures как названия для контрактов используются также в других языках.

require/ensure используется в Eiffel. 

Предлагаю не переименовывать expects/ensures контракта. А добавить еще один контракт invariant для проверки полей класса.

 

 

 

2
рейтинг
3 комментария
Александр Коганов

expects/ensures выглядит понятнее, но это вопрос привычки скорее. Зато pre/post короче. И так приходится писать длинные сигнатуры с параметрами шаблона, conditional noexcept, enable_if, хитрыми decltype(std::declval.......().function()) в типе возвращаемого значения и тп. Временами все это сразу. Получается много букв. Так что имхо спорно :)

Александр Коганов
webreh

expectes/ensures выглядят как два слова с одинаковыми первой, последней и количеством букв.

webreh
yndx-antoshkka

Тут нужны какие-нибудь аргументы, которые не были изложены в бумаге: https://github.com/cplusplus/papers/issues/162

Если такие аргументы найдутся - можно будет возобновить обсуждение. Один из возможных аргументов: ensures, expects уже используются в тексте стандарта при описаниях поведения стандартной библиотеки. Но нужны ещё аргументы.

yndx-antoshkka
Другие идеи
Группа создана, чтобы собирать предложения к стандарту C++, организовывать их внутренние обсуждения, помогать готовить их для отправки в комитет и защищать на общих собраниях в рабочей группе по С++ Международной организации по стандартизации (ISO).
Все предложения