Что означает выражение «Fail Early» и когда вы хотите это сделать? - PullRequest
23 голосов
/ 11 мая 2010

Что означает выражение «Неудачный ранний», и при каких обстоятельствах этот подход наиболее полезен, и когда вы избежите такого подхода?

Ответы [ 5 ]

25 голосов
/ 11 мая 2010

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

Fail Fast
Джим Шор
под редакцией Мартина Фаулера
http://www.martinfowler.com/ieeeSoftware/failFast.pdf

...
К счастью, есть простая техника, которая резко сократит количество этих ошибки в вашем программном обеспечении. Это не уменьшит общее количество ошибок, в хотя бы не сначала, но это сделает большинство дефектов намного легче найти.

Техника состоит в том, чтобы построить свой программное обеспечение «быстро выходит из строя».

Немедленно и видимый сбой

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

Система, которая быстро выходит из строя, делает с точностью до наоборот: когда возникает проблема, она сразу же выходит из строя и заметно. Неудачный пост не является интуитивным техника: «сразу и заметно проваливается» Похоже, это сделает ваше программное обеспечение более хрупкий, но на самом деле это делает его более надежным. Ошибки легче находить и исправлять, поэтому меньше производство.
...


Также обратите внимание на связанную концепцию отказоустойчивого итератора - итератора, который после определенных изменений в коллекции вне итератора выбрасывает как можно скорее, а не продолжает работать в потенциально нестабильной среде, или недетерминированное состояние.

5 голосов
/ 11 мая 2010

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

4 голосов
/ 11 мая 2010

«Fail Early» означает, что программа должна вызвать исключение и прекратить работу, если что-то пойдет не так. (Он описан в списке советов прагматического программиста как Crash Early )

В своей работе по биоинформатике я склонен использовать подход «Ранний провал», потому что моей главной заботой является обеспечение правильности. В отличие от Rails позволяет скрывать сбои. Например, Rails 'try позволяет вам вызывать что-либо для объекта и не вызывает исключение, если этот объект nil. Я полагаю, это потому, что для веб-сайтов обеспечение непрерывной работы программы важнее, чем правильность.

1 голос
/ 22 января 2014

Однажды у меня работал младший программист оракула, который поместил блок исключений «игнорировать все» вокруг всего своего кода, чтобы ошибок не было видно. Первоначально это делало его код впечатляющим, но: A) Ошибки заняли гораздо больше времени, чтобы найти; а также Б) Я потерял всю (ну, 80% своей) веру в его способности после этого.

С тех пор я учил людей, что это очень плохо, поскольку скрывает ошибки.

Не путайте это с модулем кода, способным справляться с входными данными низкого качества (такими как HTML, который также не является допустимым XHTML в браузере) - это вообще не должно приводить к сбою. Скорее всего, они действительно вызвали сбой много лет назад, но путь к его устранению состоял в том, чтобы заставить систему принять разумные предположения о способе восстановления.

0 голосов
/ 11 мая 2010

Это означает: «Ловить ошибки как можно раньше» . Если возможно, вы хотите знать, что они там, как только они там =).

Чем раньше вы поймаете ошибку, тем дешевле ее устранить. Если бы вы могли знать об ошибке прямо во время написания строки с ошибками, это было бы здорово. Вы бы точно знали, что вы намеревались сделать, и имели бы больше возможностей быстро удалить эту ошибку.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...