When your code loses its way
TL;DR: Missing return statements cause unexpected behavior.
Problems π
- Silent failures
- Unreliable results
- Hard debugging
- Inconsistent and misleading behavior
- Broken logic
Solutions π
- Always return values
- Use clear flow
- Validate conditions
- Test all return paths
- Use early returns
- Remove IFs
Refactorings βοΈ
Context π¬
When you forget to return a value, your function keeps executing and your app might show incomplete or wrong information.
Sample Code π
Wrong β
fun totalDistance(activity: Activity): Double {
if (activity.type == "Running") {
activity.calculateDistance()
// Missing return here
} else {
return 0.0
}
// Other options are omitted for simplicity
// Some languages raise a runtime error
// If the function does not return a value
// of the correct type (in this case a Double)
}
Right π
fun totalDistance(activity: Activity): Double {
if (activity.type == "Running") {
return activity.calculateDistance()
// Now it returns the value
} else {
return 0.0
}
}
Detection π
- [x]Automatic
You can detect this smell when your function lacks a return statement in certain branches.
Most static analyzers and linters often catch this.
Tags π·οΈ
- IFs
Level π
- [x]Beginner
Why the Bijection Is Important πΊοΈ
it’s important to maintain a clear and predictable relationship between your code and the Real World.
If a function is intended to calculate and return a value, it should always do so.
Failing to return a value breaks the MAPPER, leading to inaccurate behavior and unreliable results.
AI Generation π€
AI tools usually don’t generate this smell.
AI Detection π₯
Most AI-powered linters quickly catch missing returns with static analysis or by examining your code’s Abstract Syntax Tree.
Try Them! π
Remember: AI Assistants make lots of mistakes
Without Proper Instructions |
With Specific Instructions |
---|---|
ChatGPT |
ChatGPT |
Claude |
Claude |
Perplexity |
Perplexity |
Copilot |
Copilot |
Gemini |
Gemini |
DeepSeek |
DeepSeek |
Meta AI |
Meta AI |
Conclusion π
A missing return statement breaks your codeβs flow and produces unreliable results.
Always ensure every branch in your function returns something meaningful.
Relations π©ββ€οΈβπβπ¨
https://hackernoon.com/how-to-find-the-stinky-parts-of-your-code-part-xv
https://hackernoon.com/how-to-find-the-stinky-parts-of-your-code-part-xxi
https://hackernoon.com/how-to-find-the-stinky-parts-of-your-code-part-xxiii
https://hackernoon.com/how-to-find-the-stinky-parts-of-your-code-part-xxiv
https://hackernoon.com/how-to-find-the-stinky-parts-of-your-code-part-xxxviii
https://hackernoon.com/how-to-find-the-stinky-parts-of-your-code-part-viii-8mn3352
https://hackernoon.com/how-to-find-the-stinky-parts-of-your-code-part-xxxii
Disclaimer π
Code Smells are my opinion.
Credits π
Photo by Tim Johnson on Unsplash
A bug is never just a mistake. It represents something bigger.
Sergey Zefirov
This article is part of the CodeSmell Series.