Summary: --------
1. Functions should hardly ever be 20 lines long.
2.Keep blocks (inside if, else, while, for, etc.) short.
Ideally, just one line long. And that line should usually be a function call with a descriptive name. Don’t let functions get so big that they require deep nesting.
If you see more than 1–2 levels of indentation, it’s a smell.
Break the nested logic into smaller functions.
Example: Problem: Deep nesting(messy)
public void handleOrder(Order order) {
if (order != null) {
if (order.hasItems()) {
for (Item item : order.getItems()) {
if (item.isInStock()) {
// process item
System.out.println("Processing item: " + item.getName());
item.setStatus("PROCESSED");
} else {
System.out.println("Item out of stock: " + item.getName());
}
}
} else {
System.out.println("Order has no items.");
}
} else {
System.out.println("Order is null.");
}
}
Clean Code:
public void handleOrder(Order order) {
if (isProcessable(order)) {
processOrder(order);
}
}
// ---- helper functions ----
private boolean isProcessable(Order order) {
return order != null && order.hasItems();
}
private void processOrder(Order order) {
for (Item item : order.getItems()) {
processItem(item);
}
}
private void processItem(Item item) {
if (item.isInStock()) {
markItemAsProcessed(item);
} else {
logOutOfStock(item);
}
}
private void markItemAsProcessed(Item item) {
System.out.println("Processing item: " + item.getName());
item.setStatus("PROCESSED");
}
private void logOutOfStock(Item item) {
System.out.println("Item out of stock: " + item.getName());
}
3. Do one thing:
If you can extract a piece of code into a well-named function that adds understanding, your original function is probably doing more than one thing.
No comments:
Post a Comment