Size: a a a

2020 December 12

11

1 1 in Svelte [svelt]
лично наступал на подобные грабли.  крайне тяжело дебажить такое - в упор не видишь проблемы
источник

СА

Сергей Артёмов... in Svelte [svelt]
1 1
лично наступал на подобные грабли.  крайне тяжело дебажить такое - в упор не видишь проблемы
Видимо действительно дело привычки, потому что от квадратных скобок на новой строке интерпретатор ожидает указание на элемент массива:
let a = [1,2,3,4]
alert(
 a
 [3]
) // 4

Перед такой диструктуризацией ставлю ;. В виду необходимости. Так же как и в цикле (хотя там можно на строки разнести, но никто так не делает).
источник

СА

Сергей Артёмов... in Svelte [svelt]
Но да, если деструктуризация идёт первой строкой в блоке кода, и не поставить ;, а потом перед этой строкой что-то написать, можно и словить по невнимательности)
источник

11

1 1 in Svelte [svelt]
ну вот представь ситуацию когда в чужом коде типа моего примера был между второй и третьей строчкой какой-то if и всё работало.  потом ты делаешь невинное изменение - убираешь этот иф.  и код начинает работать совсем не так, и с твоим изменением это логически никак не связано.  увидеть такое глазами - действительно трудно.
источник

11

1 1 in Svelte [svelt]
на ту же тему, в жабаскрипте некоторые конструкции чувствительны к переносам строк.  в частности, return.   те, кто привык скобки фигурные ставить в бсд-шном стиле (одну под другой в начале отступа), на эти грабли с размаха наступают, когда пытаются вернуть объектный литерал.
источник

СА

Сергей Артёмов... in Svelte [svelt]
1 1
на ту же тему, в жабаскрипте некоторые конструкции чувствительны к переносам строк.  в частности, return.   те, кто привык скобки фигурные ставить в бсд-шном стиле (одну под другой в начале отступа), на эти грабли с размаха наступают, когда пытаются вернуть объектный литерал.
Кстати да, отличный пример того, что ; — не панацея, и что надо просто знать/изучать как язык работает :)
В том смысле, что в случае с return как не обкладывайся оберегами этими, а накосячишь — словишь))
источник

СА

Сергей Артёмов... in Svelte [svelt]
Но да, на первых порах новичкам конечно надо всё строго писать. С ;, ===, !== и тд.
А уж потом, можно и сравнивать не строго, если знаешь что делаешь. И ; опускать.
источник

11

1 1 in Svelte [svelt]
ещё из того, с чем лично сталкивался, без точки с запятой ломаются обычные скобки.   типа было у тебя
const a = someArray()
a.forEach(...)

чтобы обработать случай когда someArray возвращает undefined, делаешь
(a || []).forEach
 и всё дохнет
источник

AP

Alexander Ponomarev in Svelte [svelt]
Сергей Артёмов
Но да, на первых порах новичкам конечно надо всё строго писать. С ;, ===, !== и тд.
А уж потом, можно и сравнивать не строго, если знаешь что делаешь. И ; опускать.
новичок потом приходит редактировать код старичка без ; и с нестрогими сравнениями и стреляет в ноги. Проще не писать так никогда, чем писать хоть когда-то
источник

СА

Сергей Артёмов... in Svelte [svelt]
Alexander Ponomarev
новичок потом приходит редактировать код старичка без ; и с нестрогими сравнениями и стреляет в ноги. Проще не писать так никогда, чем писать хоть когда-то
Поэтому на работе я никогда со своими предпочтениями не лез в кодгайды)
Тред вообще пошёл от вопроса о поломке синтаксиса в пете. Дайте хоть вне работы отдохнуть от ; 😁
источник

AP

Alexander Ponomarev in Svelte [svelt]
Сергей Артёмов
Поэтому на работе я никогда со своими предпочтениями не лез в кодгайды)
Тред вообще пошёл от вопроса о поломке синтаксиса в пете. Дайте хоть вне работы отдохнуть от ; 😁
это я еще мерзкий питон не трогал =)
источник

11

1 1 in Svelte [svelt]
вот кофескрипт был действительно отвратителен.  у самого питона хоть вся библиотека строилась изначально с учётом синтаксиса. а кофескрипт вынужден вызывать что есть.  отчего получаются невообразимо уродливые конструкции типа outdented comma
источник

AP

Alexander Ponomarev in Svelte [svelt]
1 1
вот кофескрипт был действительно отвратителен.  у самого питона хоть вся библиотека строилась изначально с учётом синтаксиса. а кофескрипт вынужден вызывать что есть.  отчего получаются невообразимо уродливые конструкции типа outdented comma
питон идет против всего, везде считается что контрол флоу на исключениях это антипаттерн. Что делает питон? Делает встроенную конструкцию цикла работающую на ожидании исключения StopIteration. Вот это кайф
источник

СА

Сергей Артёмов... in Svelte [svelt]
Я лишь раз палкой тыкнул в змеюку, и что-то больше не охото
источник

СА

Сергей Артёмов... in Svelte [svelt]
А вот в раст разочек заглянул и даже понравилось сразу. Прикольная штука.
Правда тогда работы было невпроворот, так и не вернулся к этому делу.
Может опять попробовать 🤔
источник

ОК

Олег Комков... in Svelte [svelt]
Alexander Ponomarev
питон идет против всего, везде считается что контрол флоу на исключениях это антипаттерн. Что делает питон? Делает встроенную конструкцию цикла работающую на ожидании исключения StopIteration. Вот это кайф
А как ещё выйти из генератора?
источник

AP

Alexander Ponomarev in Svelte [svelt]
Олег Комков
А как ещё выйти из генератора?
а жаваскрипта и сишарпа как-то получается =)
источник

АН

Артём Никитин... in Svelte [svelt]
Константин
никогда не понимал, зачем люди пишут код без ; )
Если не считать несколько выражений подряд на одной строке (что очевидно требует какого-то разделения), то причина установки точки с запятой существует всего одна и её очень легко запомнить: Точку с запятой нужно ставить перед строкой, на которой выражение начинается со скобки.  Не важно какой: [] - деструктуризация и обмен значениями, {} - блок группировки операторов, () - самовызывающиеся функции и тернарники.
Обычная ошибка при несоблюдении этого правила (которую тоже легко запомнить) говорит что значение, стоящее на строке выше строки со скобками, не является функцией.
Это легко запомнить, чтобы никогда не пользоваться точкой с запятой.
источник

АН

Артём Никитин... in Svelte [svelt]
Если кто-то знает другую причину - буду благодарен за новую информацию.
источник

DK

Dan Kozlov in Svelte [svelt]
Pavel 🦇 Malyshev
проверю конечно, но я как-то даже не обратил внимания. просто заработало
Да, конечно. Я как-то вчера затупил немного.
Да, безусловно, с position relative кроссфейд сработает, моя ошибка. Я по ошибке вспомнил тот кейс, который был у меня, и там работал только absolute. Я хотел кроссфейдом в рамках того же пути и той же визуальной структуры анимировать переходы — условно, когда контент табов кроссфейдится друг в друга при переключении. Тут с relative не работало, потому что в дом вставлялось два элемента разом, ну и всё дёргалось.
А с absolute всё было плохо, потому что всё вынимается из дома, ну и контейнер другого размера становится.

Пришлось делать враппер, который снимает высоту absolute-блока и инлайном задаёт на элемент-контейнер пустой через tweened.
источник