Size: a a a

NodeUA - JavaScript and Node.js in Ukraine

2021 December 04

Y

Yevhen in NodeUA - JavaScript and Node.js in Ukraine
Так может и тесты не писать, линтер и форматтер выкинуть и брать на работу только тех людей, которые не ошибаются и пишут код без багов с первого раза?
источник

А

Артем in NodeUA - JavaScript and Node.js in Ukraine
Я о супер примитивных вещах говорю же. Ошибки могут быть, для этого мы пишем тесты.
Но если ошибка вызвана непониманием "принимает строку", а он упорно сует туда число — это проблема вообще вне ЯП и программирования.
источник

А

Артем in NodeUA - JavaScript and Node.js in Ukraine
Хз как мы можем с клиента отправить не те данные.
Только если сами допустили подобное
источник

EK

Evgen K in NodeUA - JavaScript and Node.js in Ukraine
кстати поздравляю, Вы только что изобрели статическую типизацию, но проверки которой будете заниматься  Вы, а не компилятор
источник

Y

Yevhen in NodeUA - JavaScript and Node.js in Ukraine
Это проблема в первую очередь языка и тулинга, если контракты/интерфейсы строятся на "обещай передавать сюда только строку".
источник

А

Артем in NodeUA - JavaScript and Node.js in Ukraine
Ну да, это всё договор. Просто весь спор строится на том, что есть люди, которые ошибаются, вот и всё.
источник

Y

Yevhen in NodeUA - JavaScript and Node.js in Ukraine
А есть, которые не ошибаются?
источник

А

Артем in NodeUA - JavaScript and Node.js in Ukraine
Нет, но для этого есть тесты. (Валидация данных и прочее. Мы допускаем ошибку, когда не учли что-то. Но если мы один раз с этим столкнулись, то второй раз такое не сделаем же)

Кст проверки типов в js вообще штука достойная отдельных споров. Не думаю что это хороший подход.
источник

А

Артем in NodeUA - JavaScript and Node.js in Ukraine
Строка — это массив. Потому строка итерируема.
Массив — это объект.

Но это всё работает, только в момент написания кода. В момент интерпретации мы получаем другие структуры данных.

Потому споры о динамической/статической типизации как-то странно звучат. (Как "Хочу чтоб за меня проверяли корректность типов") Хотя разговор должен идти от "я хочу вот так работать со своими данными".
источник

Y

Yevhen in NodeUA - JavaScript and Node.js in Ukraine
> Но если мы один раз с этим столкнулись, то второй раз такое не сделаем же)

Ну да, ошибаются же все только один раз)

> Нет, но для этого есть тесты.
Я думаю, это не нормально, что для каждого метода/функции нужно писать тесты, которые проверяют что будет, если передать все возможные типы.
источник

Y

Yevhen in NodeUA - JavaScript and Node.js in Ukraine
Строка это массив? Расскажите подробнее)
источник

А

Артем in NodeUA - JavaScript and Node.js in Ukraine
>Ну да, ошибаются же все только один раз)

Если мы совершили ошибку и не поняли в чем проблема, при том не прочитали ничего — мы плохо работаем.

Про тесты согласен. Потому у нас есть договоренности в команде. Как _method() является приватным методом. (Я знаю что можно использовать #)
источник

А

Артем in NodeUA - JavaScript and Node.js in Ukraine
Мы можем строку мутировать как массив. (У js все типы собственные, т.е. строки тут представляют собой определенную структуру данных)
источник

Y

Yevhen in NodeUA - JavaScript and Node.js in Ukraine
Но при этом ни язык ни тулинг не проверяет, что _method() всегда используется как приватный.
Это недостаток языка, а не того, как человек работает. Всегда будут подобные ошибки, пока язык/тулинг такое позволяет
источник

EK

Evgen K in NodeUA - JavaScript and Node.js in Ukraine
ну банальный пример когда вы строить открытое АПИ, или обрабатываете exel или другие форматы данных, опций может быть уйма)
источник

Y

Yevhen in NodeUA - JavaScript and Node.js in Ukraine
От того, что так можно строка не стала массивом. У нее не появился интерфейс, который позволяет работать с ней таким же образом как с массивом.

Если такое происходит в коде, то разработчик явно что-то делает не так.
источник

EK

Evgen K in NodeUA - JavaScript and Node.js in Ukraine
не можем мы мутировать строку (в js)
источник

А

Артем in NodeUA - JavaScript and Node.js in Ukraine
Для этого есть другие инструменты. Node.js про высокоуровневый бэк, с чем там всё более менее ок.
источник

А

Артем in NodeUA - JavaScript and Node.js in Ukraine
Да, ошибочка. Я скорее про обращения к элементам, т.е. схожей структуре данных.

let s_string = 'hello'
let arr_string = ['h', 'e', 'l', 'l', 'o']

console.log(s_string[1]);     // e
console.log(arr_string[1]);   // e
источник

AJ

Abu JS in NodeUA - JavaScript and Node.js in Ukraine
@xanf_ua ну хоть ты скажи да че нам делать!?
источник