Skip to content

Latest commit

 

History

History
executable file
·
56 lines (45 loc) · 1.02 KB

File metadata and controls

executable file
·
56 lines (45 loc) · 1.02 KB

Never nest beyond 3 levels

function calculate(bottom, top) {
    //  One
    if (top > bottom) {
        //  Two
        let sum = 0;

        for (let number = bottom; number <= top; number++) {
            //  Three
            if (number % 2 == 0) {
                //  Four
                sum += number;
            }
        }

        return sum;
    } else {
        return 0;
    }
}

Methods of denesting

  • Extraction - Move code into a separate function
  • Inversion - Early termination of conditions
// Extraction i.e. Separate function
function filterNumber(number) {
    // One
    if (number % 2 == 0) {
        // Two
        return number;
    }
    return 0;
}

function calculate(bottom, top) {
    // One

    // Inversion i.e. Early termination
    if (top < bottom) return 0;

    let sum = 0;

    for (let number = bottom; number <= top; number++) {
        // Two
        sum += filterNumber(number);
    }

    return sum;
}