Вложенные if и else - бывают болью
Часто вижу в коде такие конструкции.
Сразу хочется что-то с этим сделать! Решение: заменить на guard clauses (граничные операторы).
Код стал линейным, читаемым и без лишней вложенности. #refactoring #javascript
Часто вижу в коде такие конструкции.
Сразу хочется что-то с этим сделать! Решение: заменить на guard clauses (граничные операторы).
Код стал линейным, читаемым и без лишней вложенности. #refactoring #javascript
8 комментов
· 23.09
А я иногда сначала расписываю как в первом варианте , чтобы логику условий, которая в голове, отследить. И уже потом,когда все по полочкам разложу, то уже пишу как во втором варианте, а иногда и еще короче получается .
Думаю, что такой метод тоже имеет место быть.
ответить
коммент удалён
ответ удалён
· 23.09
Я в разработке мимокрокодил, но встречал мнение, что множественные выводы - это не очень хорошо (типа отладку усложняют). Что про это думаете?
ответить
коммент удалён
ответ удалён
· 23.09
Возможно, что это как-то из прошлого тянется) Главное - чтобы сторонних эффектов не возникало от начала функции до return. А так… Скорее вкусовщина, для меня это более современный стиль кода на JS. По отладке, на мой взгляд, современные дебаггеры отлично с такой задачей справляются)
ответить
ответ удалён
коммент удалён
можете перейти, но сначала проверьте ссылку и будьте аккуратны: не вводите по ссылке пароли, номера телефонов и банковских карт, и другие личные данные
https://
уверены, что хотите выйти?
придется авторизоваться заново, а заполненные данные будут удалены
что-то пошло не так — попробуйте снова чуть попозже
· 24.09
А можно было присвоить переменной одну из трёх функций с помощью Map, к примеру, и в конце её вызвать. Паттерн какой-то такой есть, то ли Стратегия, то ли ещё какой, не запоминаю их имена. А, тут условия по свойствам, тогда в Map напрямую не положить. Разве что переписывать переменную с функцией, начав с последнего условия, заменив else if на последовательность if, но тогда они все станут выполняться друг за другом, переприсваивая её, это минус. Я бы сказал, что тут лучше вместо трёх флагов завести один, что-то типа enum, но удобнее строковый, и пусть бы он хранил состояние этого match. Я же правильно понял, что все три состояния взаимоисключающие? Завести поле state и переключаться между состояниями, заодно принципиально не будет таких сочетаний флагов, которые не имеют смысла. Имея имя состояния, можно уже делать его ключом в Map и так выбирать нужную для вызова функцию. Прав был лектор по конечным автоматам, что это знание изменит взгляд.
ответить
коммент удалён
· 24.09
Спасибо за предложение! Это если пойти дальше и уже применить паттерн проектирования, хорошее решение :) Мысль поддерживаю
ответить
ответ удалён