Как не делать багов 🪲 Предусловия и Guard Expressions

preview_player
Показать описание
Сегодня про ООП и небольшой подход к его организации. Как предусловия, постусловия и инварианты связаны с guard expressions?

И конечно, опять немного шашек!

### Главы

00:00 Начало
00:35 Что такое куча? Шашек
02:33 У каждого свои шашки
05:16 Давай код!!
07:58 Защищаем инвариант
09:53 Абстракция игры
13:16 Промежуточный итог
14:24 Guard Expression
17:32 Кент Бек про Multiple Returns
18:32 Выводы

Подписывайтесь на канал и на ссылке ниже, там обсуждают правду:

Рекомендации по теме
Комментарии
Автор

применяю такой подход с множественные return после того, как где-то увидел пример "линеаризации кода" (кажется на хабре) . суть сводится к уменьшению вложенности кода за счёт выхода из метода после проверки условия, которое запрещает дальнейшее выполнение основной ветки алгоритма метода.

nickikin
Автор

Мне норм. Особенно зашла аналогия про выстрел в ногу с фейерверка

apostol_fet
Автор

Видео суперактуально, недавно как раз на работе спорил с коллегами о том, что преждевременный return в начале функции - это не плохо, а наоборот помогает избежать вложенности и делает код последовательным что-ли, более плоским, оттого и более читабельным. А это, оказывается, даже термин имеет - guard expression. Основной аргумент против них был - наличие большого количества точек выхода. Не знаю, как это мешает, если функция или метод все равно возвращают или ошибку, или результат.

dvlL
Автор

не знаю насчёт фортрана, но несколько return в той же java могут стать проблемой если функция на три километра с if..else тройной вложенности, из которых можно неожиданно и непрозрачно выйти.
Другой вопрос что множественные return в такой функции скорее всего не самая главная проблема))

tesgreat
Автор

19:07 Этим занимается формальная верификация. Интересовался этим очень-очень поверхностно, но на сколько понимаю, она сейчас постепенно развивается и уже используется для доказания корректности небольших, но популярных алгоритмов/программ. Например уже доказали корректность криптографических алгоритмов в основе протокола TLS.

Вродебычеловек
Автор

Противникам множества точек возврата, если в их языке есть stack unwinding, можно напомнить, что они в любом случае должны при чтении кода мысленно раздваивать поток исполнения каждый раз, когда видят вызов функции (повезло еще, если нет перегрузки операторов). Если они этот факт игнорируют (даже легитимно, если, например, речь идет о каком-то обычном сервере, где, грубо говоря, все состояние лежит в базе данных), то им не составит труда игнорировать и сторожевые if'ы.

vlad
Автор

"предусловия, постусловия и инварианты", чe ?? чем раньше перейдете на родной язык програмированния (английский) тем лучше, не надо будет потом кучу терминов переучивать

pjpodx