Оптимизация условных выражений заключается
Обновлено: 21.11.2024
В условиях, казалось бы, все предельно просто: освоив написание такого кода однажды, в дальнейшем всегда его придерживаешься. Но даже самое простое можно улучшить. Попробуем улучшить написание условных выражений с помощью нескольких действенных рекомендаций:
Меняем if/else на if
В этом коде функция исходя из заданного условия возвращает разные результаты. Оператор return останавливает выполнение функции и возвращает из нее значение. То есть код после оператора return выполнен не будет. Поэтому переписываем его в таком виде:
Во второй условной ветке необходимости нет, ведь если первое условие оказывается true , то возвращается значение even и выполнение функции останавливается.
Выносим большую часть кода за пределы условной ветки
А здесь код выполняется только при соблюдении условия. Но в этом подходе есть одна проблема: трудно отслеживать выполнение функции, особенно если код, заключенный в if , намного длиннее. Более четким этот подход делает следующее:
До этого весь код помещался в условную ветку: там он будет выполняться, если мышь не выйдет за допустимые границы. Теперь же мы проверяем, является ли положение мыши недопустимым. Если оно недопустимо, выполнение функции останавливаем. В противном случае продолжаем его.
Когда условий слишком много, задействуем switch
Когда условий сразу несколько (как в этом примере), использование if/else — не лучший вариант. Так как здесь проверяется значение одной и той же переменной, пример лучше переписать в более четкой форме с помощью switch :
Когда код в условии состоит из одной строчки, используем словарь
Когда нужно только выполнить функцию при соблюдении определенного условия (как в предыдущем коде), у нас есть возможность написать код еще лучше: вместо оператора switch задействуем словарь.
Благодаря словарю получаем самый четкий и лаконичный код. Здесь в объекте сохраняется ссылка на функцию, после чего с помощью значения key вызывается требуемая функция , но только если для этого ключа есть значение. dic['a'] вернет moveLeft , dic['w'] вернет moveTop и так далее. А если значения для key нет — будет возвращаться undefined . Поэтому нужно проверить, есть ли значение для ключа, прежде чем пытаться вызвать функцию. Проверяем с помощью dicОптимизация условных выражений заключается && dicОптимизация условных выражений заключается(); . Это то же самое, что и:
Заключение
Даже самое простое можно улучшить, в том числе условные выражения. Главное — всегда искать новые и лучшие решения старых проблем, и иногда такие решения находятся.
Читайте также: