Хорошая статья; много хороших идей для удобочитаемости. У меня есть несколько возражений против этой конкретной строки, мне любопытно узнать ваше мнение по этому поводу:

Если условия действительно взаимоисключающие (как в случае цепочки if...else), то мне лично кажется более затруднительным читать код, который не делает это очевидным. Например.:

if (color === "red") {
  // do red stuff
}
if (color === "blue") {
  // do blue stuff
}

Меня это немного дезориентирует: есть ли способ, которым цвет может быть одновременно красным и синим, чего я не понимаю? Возможно, в этом упрощенном примере это не имеет значения, но могут быть более тонкие условия, из-за которых мне трудно понять, должны ли они быть взаимоисключающими. Например.:

if (obj.shouldFrob()) {
  // Frob stuff.
}
if (obj.shouldGork()) {
  // Gork stuff.
}

Может ли объект и фроб, и горк? Глядя на этот код, я не могу сказать, что это невозможно, поэтому мне нужно действовать так, как если бы это было возможно. Это добавило сложности моей ментальной модели, что затруднило понимание. Кроме того, если я редактирую этот код, мой код также должен быть более сложным, чтобы обрабатывать добавленный регистр.

Также стоит отметить, что простое удаление else ключевых слов не приводит к созданию эквивалентного кода, поскольку else обеспечивает взаимное исключение различных условий. Итак, цепочка if...else со сравнительно простыми условиями:

if (condA) {
  // ...
} else if (condB) {
  // ...
} else if (condC) {
  // ...
}

усложняется:

if (condA) {
  // ...
}
if (!condA && condB) {
  // ...
}
if (!condA && !condB && condC) {
  // ...
}

Наконец, есть небольшое потенциальное снижение производительности за неиспользование цепочки if...else, потому что интерпретатору необходимо оценить все условия; с цепочкой, как только он находит блок для выполнения, он может пропустить все оставшиеся условия в цепочке.