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 👩❤️💋👨

Code Smell 73 - Exceptions for Expected Cases
Maxi Contieri ・ May 31 '21

Code Smell 186 - Hardcoded Business Conditions
Maxi Contieri ・ Dec 14 '22

Code Smell 36 - Switch/case/elseif/else/if statements
Maxi Contieri ・ Nov 28 '20

Code Smell 156 - Implicit Else
Maxi Contieri ・ Aug 6 '22
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

Software Engineering Great Quotes
Maxi Contieri ・ Dec 28 '20
This article is part of the CodeSmell Series.
Top comments (0)