principles:fail_fast
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionNext revisionBoth sides next revision | ||
principles:fail_fast [2021-09-02 12:02] – old revision restored (2021-05-19 11:17) 65.21.179.175 | principles:fail_fast [2021-09-02 12:03] – old revision restored (2021-05-19 11:16) 65.21.179.175 | ||
---|---|---|---|
Line 3: | Line 3: | ||
===== Variants and Alternative Names ===== | ===== Variants and Alternative Names ===== | ||
- | * Rule of Repair((Eric S. Raymond: // | + | * Rule of Repair |
- | * Crash Early((Andrew Hund and David Thomas // | + | |
===== Context ===== | ===== Context ===== | ||
/* fill in contexts here: */ | /* fill in contexts here: */ | ||
- | * [[contexts:Implementation]] /* FF is more about implementation than design */ | + | * [[contexts:Object-Oriented |
- | * [[contexts: | + | |
===== Principle Statement ===== | ===== Principle Statement ===== | ||
- | A design is better | + | > Repair what you can — but when you must fail, fail noisily and as soon as possible.((Eric S. Raymond: // |
===== Description ===== | ===== Description ===== | ||
- | Check for erroneous conditions like wrong parameter values, unmet preconditions, | ||
===== Rationale ===== | ===== Rationale ===== | ||
- | Then a failure remains undetected, it propagates through the system ultimately causing other modules to fail. This results in in a more complicated fault removal. Furthermore undesired side effects like corrupted files may occur. A crashed program clearly communicates that there is a problem and is often a better situation than a misbehaving program. | ||
===== Strategies ===== | ===== Strategies ===== | ||
- | |||
- | * Check input parameters for validity -- especially non-nullness. | ||
- | * Throw an Exception. | ||
- | * Use assertions. | ||
- | |||
- | |||
- | ===== Caveats ===== | ||
- | |||
- | FF reveals problems which are already present in the system. For a system with only a few problems, this is good as the remaining faults are identified and fixed more easily. But applying FF to a system that has many problems may decrease reliability further as problems which were hidden, show up, produce error messages and lead to system aborts. | ||
- | |||
- | See also section [[#contrary principles]]. | ||
Line 64: | Line 49: | ||
==== Complementary Principles ==== | ==== Complementary Principles ==== | ||
- | * [[Postel' | + | * [[principles:Postel' |
- | * [[Principle | + | * [[principles: |
- | * [[Murphy' | + | |
==== Principle Collections ==== | ==== Principle Collections ==== | ||
{{page> | {{page> | ||
- | {{page> | ||
- | ===== Examples | + | ===== Example |
Line 85: | Line 68: | ||
* Eric S. Raymond: // | * Eric S. Raymond: // | ||
- | * Andrew Hund and David Thomas // | ||
* [[wiki> | * [[wiki> | ||
* [[wp> | * [[wp> |
principles/fail_fast.txt · Last modified: 2021-10-18 21:33 by christian