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 |
---|---|
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.