Более простые операторы if неизменно означают более чистый код JavaScript.
Условные операторы являются неотъемлемой частью JavaScript. Они позволяют вам выполнять код в зависимости от того, истинно или ложно заданное условие, и вы можете вкладывать несколько иначе, если заявления (и еще) для оценки более чем одного условия.
Но вот проблема — при написании сложных если еще цепочки, все может быстро запутаться, и вы можете легко получить код, который трудно читать и понимать.
Давайте научимся рефакторингу длинных и сложных если... иначеесли... иначе условные цепочки в более краткую, чистую и понятную версию.
Сложные цепочки if...else
При написании сложных операторов if...else в JavaScript важно, чтобы вы писали чистый, лаконичный и понятный код. Например, взгляните на если еще условная цепочка внутри функции ниже:
функцияможно пить(человек) {
если(человек?.возраст != нулевой) {
если(человек.возраст < 18) {
консоль.бревно(«Еще слишком молод»)
} ещеесли(человек.возраст < 21) {
консоль.бревно(«Не в США»)
} еще {
консоль.бревно(«Разрешено пить»)
}
} еще {
консоль.бревно(«Ты не человек»)
}
}константа человек = {
возраст: 22
}
можно пить (человек)
Логика здесь проста. Первый если заявление гарантирует, что человек объект имеет возраст собственность (иначе он или она не человек). Внутри этого если блок, вы добавили если... иначе... если цепочка, которая в основном говорит:
Если человек моложе 18 лет, он слишком молод, чтобы пить. Если они моложе 21 года, они все еще не достигли возраста, в котором разрешено употребление алкоголя в Соединенных Штатах. В противном случае они могут легально получить выпивку.
Хотя приведенный выше код действителен, вложенность затрудняет его понимание. К счастью, вы можете реорганизовать код, чтобы сделать его кратким и более удобным для чтения, используя защитная оговорка.
Охранные оговорки
В любое время у вас есть если заявление, которое обертывает весь ваш код, вы можете использовать защитная оговорка удалить всю вложенность:
функцияcanDrinkBetter() {
если(человек?.возраст == нулевой) возвращатьсяконсоль.бревно(«Ты не человек»)
если(человек.возраст < 18) {
консоль.бревно(«Еще слишком молод»)
} ещеесли(человек.возраст < 21) {
консоль.бревно(«Не в США»)
} еще {
консоль.бревно(«Разрешено пить»)
}
}
В начале функции вы определили защитное предложение, указывающее, что если это конкретное условие не выполняется, вы хотите выйти из функции. можно пить лучше () работать немедленно (и записывать «Вы не человек» на консоли).
Но если условие выполнено, вы оцениваете если еще цепочку, чтобы увидеть, какой блок применим. Запуск кода дает тот же результат, что и в первом примере, но этот код легче читать.
Не используйте один возврат
Вы можете возразить, что описанная выше техника не является хороший принцип программирования потому что мы используем несколько возвратов в одной и той же функции, и вы считаете, что лучше иметь только один оператор возврата (также известный как политика единого возврата).
Но это ужасный способ написания кода, потому что он заставляет вас попадать в те же безумные ситуации вложенности, которые мы видели в первом примере кода.
С учетом сказанного, вы можете использовать несколько возвращаться инструкции для дальнейшего упрощения кода (и избавления от вложенности):
функцияcanDrinkBetter() {
если(человек?.возраст == нулевой) возвращатьсяконсоль.бревно(«Ты не человек»)если(человек.возраст < 18) {
консоль.бревно(«Еще слишком молод»)
возвращаться
}если(человек.возраст < 21) {
консоль.бревно(«Не в США»)
возвращаться
}
консоль.бревно(«Разрешено пить»)
}
Этот код работает так же, как и два предыдущих примера, а также немного чище.
Извлечение функций для более чистого кода
Наш последний блок кода был чище, чем первые два, но он все еще не так хорош, как мог бы быть.
Вместо того, чтобы долго если еще цепочка внутри одной функции, можно создать отдельную функцию можетПитьРезультат() который выполняет проверку для вас и возвращает результат:
функцияcanDrinkResult(возраст) {
если(возраст < 18) возвращаться«Еще слишком молод»
если(возраст < 21) возвращаться«Не в США»
возвращаться«Разрешено пить»
}
Затем внутри основной функции все, что вам нужно сделать, это сначала применить предложение защиты перед вызовом функции. можетПитьРезультат() (с возрастом в качестве параметра), чтобы получить результат:
функцияcanDrinkBetter() {
если(человек?.возраст == нулевой) возвращатьсяконсоль.бревно(«Ты не человек»)
позволять результат = canDrinkResult (person.age)
консоль.log (результат)
}
Таким образом, в этом случае вы делегировали задачу проверки возраста употребления алкоголя отдельной функции и вызывали ее только при необходимости. Это делает ваш код кратким и более простым для работы, чем все предыдущие примеры.
Держите else подальше от условных операторов
Вы узнали, как преобразовать сложные вложенные условные цепочки в более короткие и удобные для чтения, используя защитные предложения и технику извлечения функций.
Постарайтесь сохранить еще как можно дальше от ваших условных выражений, используя как защитные предложения, так и технику извлечения функций.
Если вы все еще новичок в использовании JavaScript если еще утверждение, начните с основ.