Skip to content

Project 5, Calculator. Refactoring: nested if else statements #1095

Open
@ipzk241-zhdv

Description

@ipzk241-zhdv

Duplicate code.
The multiple else if checks on button.classList.contains() are repetitive, and this pattern can be refactored using a mapping approach. This would make code more maintainable and extensible.

Source file: https://github.com/ZeroOctave/ZeroOctave-Javascript-Projects/blob/main/assets/Js/Calculator.js
Code fragment:

operationButtons.forEach(button => {
  button.addEventListener('click', () => {
    if (button.classList.contains("special")) {
      if (button.classList.contains("pie-button")) {
        calculator.specialOperation(1)
      }
      else if (button.classList.contains("e-button")) {
        calculator.specialOperation(2)
      }
      else if (button.classList.contains("square")) {
        calculator.specialOperation(3)
      }
      else if (button.classList.contains("pow")) {
        calculator.specialOperation(4)
      }
      else if (button.classList.contains("squareRoot")) {
        calculator.specialOperation(5)
      }
      else if (button.classList.contains("logBase10")) {
        calculator.specialOperation(6)
      }
    }
    else calculator.chooseOperation(button.innerText)
    calculator.updateDisplay()
  })
})

Metadata

Metadata

Assignees

No one assigned

    Labels

    duplicateThis issue or pull request already exists

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions