Во время кодирования очень важно выработать хорошие привычки и механизмы, чтобы не допустить неожиданных ошибок. Чем больше у нас опыта, тем эффективнее мы становимся в этой области. Инженеры ежедневно предоставляют тонны кода, поэтому следование некоторым хорошо устоявшимся шаблонам важнее, чем пытаться проявить фантазию, используя этот последний крутой трюк, о котором мы только что прочитали в Твиттере. В конце концов, наша главная цель - предоставить функциональное и надежное программное обеспечение, верно?
Шумиха вокруг разработки JavaScript и Frontend
К сожалению, это заболевание действительно распространено среди разработчиков JavaScript, особенно в последние 3-4 года. Язык быстро развивается, новые технологии появляются каждый день, тенденции меняются то и дело и т. Д. Интерфейсному разработчику действительно легко разрушить свои старые добрые привычки, пытаясь быстро усвоить и внедрить столько новых интересных вещей.
Типичная ошибка в приложениях ReactJS
Так что же здесь? Это очень простая ошибка, которую многие даже опытные разработчики фронтендов делали хотя бы раз. Давайте погрузимся в ReactJS.
Мы все используем логический оператор И для рендеринга разметки, верно? Конечно. Это действительно удобно и заставляет выглядеть умнее 😉. Хорошо, мы также пишем немного меньше JSX-кода в нашем компоненте, что действительно приятно. Типичный пример:
Это работает, потому что в JSX true && expression
оценивается как expression
:
Хорошо, это было легко. Иногда это может показаться немного менее читаемым, особенно когда выражения там становятся более сложными, но в целом он работает нормально.
Все идет нормально. Давайте сделаем его более острым. Сколько раз вы это видели?
Это даст вам большой жирный 0
и ничего больше, поскольку items.length
не оценивается как boolean
. Вы ведь видели это уродливое 0
раньше, верно? Бьюсь об заклад, у тебя есть.
Это действительно распространенная ошибка, и на самом деле даже весьма опытные разработчики попадают в эту ловушку, какой бы простой она ни казалась. Почему? Потому что их устоявшиеся модели и привычки не соблюдались.
Некоторые решения
Мы можем использовать Boolean
как функцию для решения этой проблемы:
Мы можем использовать двойной восклицательный знак, чтобы принудительно превратить его в логическое значение:
Мы можем использовать мертвое простое сравнение с 0
:
Мы можем использовать тернарный оператор:
Мы можем использовать чистую функцию для запуска некоторой логики и рендеринга разметки, особенно если логика становится еще более сложной:
Мы даже можем использовать логику if...else...
в нашей чистой функции, чтобы еще раз различать эти 2 случая:
Так много вариантов, но какой лучший? Хммм, у меня нет ответа на этот вопрос, но я уверен, что лучший из них - тот, который выглядит более читабельным для ваших глаз, избавляет вас от этих уродливых 0
и поможет вам быстро понять, что происходит, когда вы вернетесь через 2 или 3 месяца.
Наверное, поэтому многие опытные ребята, как я показал, предпочитают последний. Это может показаться скучным шаблоном, но это вполне безопасный, не требующий пояснений и расширяемый шаблон.
У каждого разработчика свои предпочтения и хорошие привычки. Создавайте свои собственные и придерживайтесь их, чтобы предоставлять надежное, удобочитаемое и удобное в обслуживании программное обеспечение. Ваше здоровье!!!