>codeshame
Score: 2.0 out of 10
2.0/10
public roast
verdict: needs_serious_help
JavaScript
7 lines
3 focus points

"Off-by-one error festival with silent failures"

Here is the breakdown of what hurt your score, plus a cleaned-up version you can use as a starting point. If the roast feels fair, share it. If it feels unfair, paste better code next time.

score

2.0 / 10

fixed output

9 lines

line delta

+2

// summary

Your strongest next move is to fix the highest-severity issue first, then compare the cleanup against the original before shipping anything.

// sharing

Public roasts can land in the leaderboard. Private reviews stay out of it and are better for real code you do not want exposed.

// compare

Use the original and fixed blocks below to spot naming, logic, and structure changes quickly instead of reading the whole thing twice.

//your_submission
CrashyCalculator.js
function total(items) {
  let result = 0
  for (let i = 0; i <= items.length; i++) {
    result += items[i].price
  }
  return result
}
//detailed_analysis
!

Off-by-one Error

You managed to write a loop that goes out of bounds, because who needs array indexing to work correctly, right? This is a masterclass in how to make your code crash silently.
!

Unvalidated Input

Apparently, you assume that every item in the array will always have a price property. What a beautifully naive worldview. Do you also assume all users will always enter valid data and never try to break your code?
?

Lack of Error Handling

Your code is like a ticking time bomb, waiting for the inevitable moment when it will encounter an item without a price property or any other unexpected condition, at which point it will quietly fail without so much as a whisper of warning. Bravo.
//suggested_fix

original: 7 lines · fixed: 9 lines

CrashyCalculator_fixed.js
+function total(items) {
+ let result = 0;
+ for (let i = 0; i < items.length; i++) {
+ if (items[i] && items[i].price) {
+ result += items[i].price;
+ }
+ }
+ return result;
+}