August 2016
Intermediate to advanced
635 pages
14h 5m
English
State machines are an amazingly useful device in computer programming. Unfortunately they are not used very frequently by most programmers. I'm sure that at least some of the objection to state machines is that many people implement them as a giant if statement like so:
function (action, amount) {
if (this.state == "overdrawn" && action == "withdraw") {
this.state = "on hold";
}
if (this.state == "on hold" && action != "deposit") {
this.state = "on hold";
}
if (this.state == "good standing" && action == "withdraw" && amount <= this.balance) {
this.balance -= amount;
}
if (this.state == "good standing" && action == "withdraw" && amount >this.balance) {
this.balance -= amount;
this.state = "overdrawn";
}
};This is just a sample of what could ...