Test code quality review#6
Conversation
| function formatUserData(user) { | ||
| let result = ""; | ||
|
|
||
| if (user) { | ||
| if (user.name) { | ||
| result = result + user.name; | ||
| } else { | ||
| result = result + "unknown"; | ||
| } | ||
|
|
||
| if (user.email) { | ||
| result = result + " - " + user.email; | ||
| } else { | ||
| result = result + " - no-email"; | ||
| } | ||
|
|
||
| if (user.role) { | ||
| result = result + " - " + user.role; | ||
| } else { | ||
| result = result + " - no-role"; | ||
| } | ||
| } else { | ||
| result = "no user"; |
There was a problem hiding this comment.
formatUserData has multiple nested if/else blocks; prefer early returns or guard clauses to reduce nesting and clarify control flow (e.g., return 'no user' immediately and use defaults or early assignments for fields).
Show fix
| function formatUserData(user) { | |
| let result = ""; | |
| if (user) { | |
| if (user.name) { | |
| result = result + user.name; | |
| } else { | |
| result = result + "unknown"; | |
| } | |
| if (user.email) { | |
| result = result + " - " + user.email; | |
| } else { | |
| result = result + " - no-email"; | |
| } | |
| if (user.role) { | |
| result = result + " - " + user.role; | |
| } else { | |
| result = result + " - no-role"; | |
| } | |
| } else { | |
| result = "no user"; | |
| function formatUserData(user) { | |
| if (!user) { | |
| return "no user"; | |
| } | |
| let result = ""; | |
| if (user.name) { | |
| result = result + user.name; | |
| } else { | |
| result = result + "unknown"; | |
| } | |
| if (user.email) { | |
| result = result + " - " + user.email; | |
| } else { | |
| result = result + " - no-email"; | |
| } | |
| if (user.role) { | |
| result = result + " - " + user.role; | |
| } else { | |
| result = result + " - no-role"; |
Details
✨ AI Reasoning
A newly added function builds a string from a 'user' object via nested conditionals. The function has an outer 'if (user)' and three nested 'if/else' checks inside it, which increases indentation and obscures the main, simple outcome construction. Using guard clauses or early returns (for example, returning 'no user' early when user is falsy, and providing defaults via early assignments) would reduce nesting, improve readability, and make the control flow clearer.
Reply @AikidoSec feedback: [FEEDBACK] to get better review comments in the future.
Reply @AikidoSec ignore: [REASON] to ignore this issue.
More info
No description provided.