Defensive Programming
Early Returns
Early returns keep special cases close to the top of a function.
Early Returns
early_returns.cpp
#include <iostream>
int shippingCost(int itemCount) {
if (itemCount <= 0) {
return 0;
}
if (itemCount > 10) {
return 12;
}
return 5;
}
int main() {
int itemCount = ;
int cost = shippingCost(itemCount);
std::cout << "itemCount=" << itemCount << std::endl;
std::cout << "shippingCost=" << cost << std::endl;
return 0;
}
#include <iostream>
int shippingCost(int itemCount) {
if (itemCount <= 0) {
return 0;
}
if (itemCount > 10) {
return 12;
}
return 5;
}
int main() {
int itemCount = ;
int cost = shippingCost(itemCount);
std::cout << "itemCount=" << itemCount << std::endl;
std::cout << "shippingCost=" << cost << std::endl;
return 0;
}
#include <iostream>
int shippingCost(int itemCount) {
if (itemCount <= 0) {
return 0;
}
if (itemCount > 10) {
return 12;
}
return 5;
}
int main() {
int itemCount = ;
int cost = shippingCost(itemCount);
std::cout << "itemCount=" << itemCount << std::endl;
std::cout << "shippingCost=" << cost << std::endl;
return 0;
}
guard clause
A guard clause returns early when a value does not meet the normal assumptions of the function.