02.09.2022, 23:21
|
|
Тлен
|
|
Регистрация: 02.01.2010
Сообщений: 6,590
|
|
Alikberov, лол, потому что это запутает код ещё больше. С метками то уже ад, с цифрами - вообще полное безумие.
Попади я на такой код, я бы реально задумался о рукоприкладстве вживую, а не через монитор.)
Это тут у тебя три цикла сразу подряд и выполняют полтора действия(и то с полпинка не рабирёшься), а попробуй представить себе реальный цикл с этим дерьмом.
__________________
29375, 35
Последний раз редактировалось Aetae, 02.09.2022 в 23:25.
|
|
02.09.2022, 23:55
|
|
Кандидат Javascript-наук
|
|
Регистрация: 16.08.2018
Сообщений: 109
|
|
Сообщение от Aetae
|
Alikberov, лол, потому что это запутает код ещё больше. С метками то уже ад, с цифрами - вообще полное безумие.
Попади я на такой код, я бы реально задумался о рукоприкладстве вживую, а не через монитор.)
Это тут у тебя три цикла сразу подряд и выполняют полтора действия(и то с полпинка не рабирёшься), а попробуй представить себе реальный цикл с этим дерьмом.
|
Согласен, обфускация имеется.
Но, на крайний случай такие механизмы не помешали бы, однако, с примечанием, что не рекомендуется к обильному использованию и валидаторы не пропустят, если на весь код приходится больше процента.
Но, правда: Иногда, в очень узких местах, указание уровня действия не помешало бы, чем вкладывать в цикл функцию с циклом и прерываться по return true/false, типа:
for(i = 0; i < x; ++ i) {
if(function() {
for(j = 0; j < y; ++ j) {
if(i == j)
return false;
}
})
continue;
}
Что ещё хуже.
Последний раз редактировалось Alikberov, 03.09.2022 в 00:00.
|
|
03.09.2022, 00:38
|
|
Тлен
|
|
Регистрация: 02.01.2010
Сообщений: 6,590
|
|
Alikberov, по-хорошему - разбить всё на отдельные функции с говорящими именами и вызывать одну из другой.
Максимум для цикла двойная вложенность и то только в простых случаях.
__________________
29375, 35
|
|
03.09.2022, 14:34
|
|
Профессор
|
|
Регистрация: 03.02.2020
Сообщений: 2,750
|
|
Сообщение от Alikberov
|
Почему нельзя указать число с указанием уровня вложенности для их действия?
|
Так label для этого и существуют. Не надо вручную считать уровень вложенности.
|
|
03.09.2022, 14:46
|
|
Профессор
|
|
Регистрация: 03.02.2020
Сообщений: 2,750
|
|
Вообще в программировании существуют много спорных ситуаций, про которые есть прямо противоположные мнения. Стоит так делать или нет. С одной стороны "удобочитаемость", с другой стороны эффективность.
Это и break, и вложенные тетрарные операции, и использование блоков для инкапсуляции переменных, и обязательное закрытие тегов в html....
Удобочитаемость, как мне кажется - дело привычки и понимания кода.
Доходит до того, что ругань идет по поводу x | 0 для взятия целой части. Мол это не понятно, и всегда надо Math.floor.
А вдруг, кому то не понятно x++? Тогда надо всегда х += 1; использовать? Хотя кому то и это может быть не понятно.
Тогда уж x = x+ 1; И только так.
|
|
03.09.2022, 14:58
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,126
|
|
Сообщение от voraa
|
Доходит до того, что ругань идет по поводу x | 0 для взятия целой части. Мол это не понятно, и всегда надо Math.floor.
|
Math.trunc()
|
|
03.09.2022, 15:14
|
|
Кандидат Javascript-наук
|
|
Регистрация: 16.08.2018
Сообщений: 109
|
|
Сообщение от voraa
|
Так label для этого и существуют. Не надо вручную считать уровень вложенности.
|
Нe всегда получается придумать вразумительное имя функции, не говоря уж о метках.
Тем более, когда тело функции синтезируется по шаблону при запуске скрипта.
Цитата:
|
Доходит до того, что ругань идет по поводу x | 0 для взятия целой части. Мол это не понятно, и всегда надо Math.floor.
А вдруг, кому то не понятно x++? Тогда надо всегда х += 1; использовать? Хотя кому то и это может быть не понятно.
Тогда уж x = x+ 1; И только так.
|
Для себя я выработал правило писать «for(i = 0; i < n; ++ i) {» вместо «for(i = 0; i < n; i++){», так как «++){» - эзотерика какая-то…
А «x | 0» выглядит не так интуитивно, как «x.0»…
Тем более, в условиях форума «Math.floor(x)» - слишком громоздкая запись…
|
|
03.09.2022, 15:16
|
|
Профессор
|
|
Регистрация: 13.03.2013
Сообщений: 1,572
|
|
voraa,
x | 0 - неудачный пример для js
Math.floor - работает быстрее и с большими числами
const a = Math.pow(2, 52) / 3;
console.log(a, a|0, Math.floor(a));
alert((a|0) === Math.floor(a))
|
|
03.09.2022, 15:55
|
|
Профессор
|
|
Регистрация: 03.02.2020
Сообщений: 2,750
|
|
Сообщение от Vlasenko Fedor
|
x | 0 - неудачный пример для js
|
Разумеется, когда это возможно (число в пределах 2**32).
Для меня большие целые числа - экзотика.
Сообщение от Alikberov
|
не так интуитивно, как «x.0»
|
Проблема в том, что так нельзя.
|
|
03.09.2022, 16:19
|
|
Кандидат Javascript-наук
|
|
Регистрация: 16.08.2018
Сообщений: 109
|
|
Сообщение от voraa
|
Проблема в том, что так нельзя.
|
Зa 27 лет JavaScript изменился достаточно хорошо.
И приобрёл множество экзотических синтаксических особенностей.
Перегрузку операторов до сих пор не ввели.
Думаю, не было бы большой проблемой добавить подобную фишку округления до указанного порядка:
console.log(Math.PI.0); // 3
console.log(Math.PI.1); // 3.1
console.log(Math.PI.2); // 3.14
console.log(Math.PI.3); // 3.141
console.log(Math.PI.4); // 3.1415
console.log(Math.PI.5); // 3.14159
Чем выражение «Math.floor(x * 10 ** n) / 10 ** n» (иногда это требуется)…
(Хотя Фортрановский ** ввели совсем недавно тоже.)
Последний раз редактировалось Alikberov, 03.09.2022 в 16:27.
|
|
|
|