Каковы предварительные условия различий, пост-состояние и инвариант в компьютерной терминологии - программирование

Каковы предварительные условия различий, пост-состояние и инвариант в компьютерной терминологии

Я читаю книгу Java Concurrency на практике и немного путаюсь с этими терминами:

  • Предварительное условие
  • Состояние сообщения
  • Инварианты

Может кто-нибудь, пожалуйста, объясните мне их (например, если это возможно)?

4b9b3361

Ответ 1

У вас будет много проблем с написанием Java, особенно многопоточного кода, если вы не можете понять эти простые идеи:

  • Предварительные условия - это вещи, которые должны быть истинными до вызова метода. Метод говорит клиентам "это то, что я ожидаю от вас".
  • Пост-условия - это то, что должно быть истинным после завершения метода. Метод говорит клиентам "это то, что я обещаю сделать для вас".
  • Инварианты - это вещи, которые всегда верны и не изменятся. Метод говорит клиентам: "Если это было правдой, прежде чем вы позвонили мне, я обещаю, что все будет так, когда я закончу".

Все они являются частью идеи, называемой "программирование по контракту". Он был изобретен парнем по имени C.A.R. Хора. Бертран Мейер построил объектно-ориентированный язык под названием Eiffel вокруг него. Никто его не использует, но из-за этого у него был день на солнце.

Эйфель не очень популярен. Есть более четырех миллионов вопросов по SO, поскольку я пишу это, но только 32 из них отмечены "eiffel".

Обновление: с 29 июня по 2016 год на SO было 11 966 392 вопроса. Только 92 из них были отмечены "Эйфелем". Процент вопросов Эйфеля остается примерно постоянным на уровне ~ 0,00077%.

Я стою исправленным - спасибо, flamingpenguin. Я обновил свой ответ.