36
loading...
This website collects cookies to deliver better user experience
let person = {
phone: {
exists: false,
number: '+1 (555) 555-5555'
}
}
We have a 9 line function that goes three indentations deep.
We can simplify this function. The question is, how much more readable are we able to make this function?
Through six simple iterations of refactoring this function we are going to simplify this hasUSNumber function into a single line with zero indents.
let hasUSNumber = dude => {
if (dude.phone.exists === true) {
if (dude.phone.number.startsWith('+1')) {
return true
}
} else {
return false
}
}
hasUSNumber = dude => {
if (dude.phone.exists === false) {
return false
}
else if (dude.phone.number.startsWith('+1')) {
return true
}
}
hasUSNumber = dude => {
if (dude.phone.exists && dude.phone.number.startsWith('+1')) {
return true
}
return false
}
hasUSNumber = dude => {
return dude.phone.exists && dude.phone.number.startsWith('+1')
}
hasUSNumber = dude => dude.phone.exists && dude.phone.number.startsWith('+1')
hasUSNumber = ({ phone }) => phone.exists && phone.number.startsWith('+1')
hasUSNumber = dude => {
if (dude.phone.exists === true) {
if (dude.phone.number.startsWith('+1')) {
return true
}
} else {
return false
}
}
hasUSNumber = ({phone}) => phone.exists && phone.number.startsWith('+1')
Inverse conditional check
Refactor
if ($x === true)
To
if ($x === false)
Combine nested if's into one statement using && operator
Refactor
if ($x === true)
if ($y === true)
To
if ($x === false && $y === false)
```js
if ($x === true) {
return true
} else {
return false
}
```
return $x