Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 02.09.2022, 23:21
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,590

Alikberov, лол, потому что это запутает код ещё больше. С метками то уже ад, с цифрами - вообще полное безумие.

Попади я на такой код, я бы реально задумался о рукоприкладстве вживую, а не через монитор.)


Это тут у тебя три цикла сразу подряд и выполняют полтора действия(и то с полпинка не рабирёшься), а попробуй представить себе реальный цикл с этим дерьмом.
__________________
29375, 35

Последний раз редактировалось Aetae, 02.09.2022 в 23:25.
Ответить с цитированием
  #12 (permalink)  
Старый 02.09.2022, 23:55
Аватар для Alikberov
Кандидат Javascript-наук
Отправить личное сообщение для Alikberov Посмотреть профиль Найти все сообщения от Alikberov
 
Регистрация: 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.
Ответить с цитированием
  #13 (permalink)  
Старый 03.09.2022, 00:38
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,590

Alikberov, по-хорошему - разбить всё на отдельные функции с говорящими именами и вызывать одну из другой.
Максимум для цикла двойная вложенность и то только в простых случаях.
__________________
29375, 35
Ответить с цитированием
  #14 (permalink)  
Старый 03.09.2022, 14:34
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,750

Сообщение от Alikberov
Почему нельзя указать число с указанием уровня вложенности для их действия?
Так label для этого и существуют. Не надо вручную считать уровень вложенности.
Ответить с цитированием
  #15 (permalink)  
Старый 03.09.2022, 14:46
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,750

Вообще в программировании существуют много спорных ситуаций, про которые есть прямо противоположные мнения. Стоит так делать или нет. С одной стороны "удобочитаемость", с другой стороны эффективность.
Это и break, и вложенные тетрарные операции, и использование блоков для инкапсуляции переменных, и обязательное закрытие тегов в html....
Удобочитаемость, как мне кажется - дело привычки и понимания кода.

Доходит до того, что ругань идет по поводу x | 0 для взятия целой части. Мол это не понятно, и всегда надо Math.floor.
А вдруг, кому то не понятно x++? Тогда надо всегда х += 1; использовать? Хотя кому то и это может быть не понятно.
Тогда уж x = x+ 1; И только так.
Ответить с цитированием
  #16 (permalink)  
Старый 03.09.2022, 14:58
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

Сообщение от voraa
Доходит до того, что ругань идет по поводу x | 0 для взятия целой части. Мол это не понятно, и всегда надо Math.floor.
Math.trunc()
Ответить с цитированием
  #17 (permalink)  
Старый 03.09.2022, 15:14
Аватар для Alikberov
Кандидат Javascript-наук
Отправить личное сообщение для Alikberov Посмотреть профиль Найти все сообщения от Alikberov
 
Регистрация: 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)» - слишком громоздкая запись…
Ответить с цитированием
  #18 (permalink)  
Старый 03.09.2022, 15:16
Аватар для Vlasenko Fedor
Профессор
Отправить личное сообщение для Vlasenko Fedor Посмотреть профиль Найти все сообщения от Vlasenko Fedor
 
Регистрация: 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))
Ответить с цитированием
  #19 (permalink)  
Старый 03.09.2022, 15:55
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,750

Сообщение от Vlasenko Fedor
x | 0 - неудачный пример для js
Разумеется, когда это возможно (число в пределах 2**32).
Для меня большие целые числа - экзотика.

Сообщение от Alikberov
не так интуитивно, как «x.0»
Проблема в том, что так нельзя.
Ответить с цитированием
  #20 (permalink)  
Старый 03.09.2022, 16:19
Аватар для Alikberov
Кандидат Javascript-наук
Отправить личное сообщение для Alikberov Посмотреть профиль Найти все сообщения от Alikberov
 
Регистрация: 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.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как заменить данный кусок кода, чтобы он корректно работал в extjs5? Risa ExtJS 3 05.02.2015 22:24
Чем можно сделать отображение видео на сайте как в примере? Duda.Ml1986@gmail.com Библиотеки/Тулкиты/Фреймворки 0 24.10.2014 11:13
Чем заменить live() ? FRIE jQuery 2 06.10.2014 18:03
Чем заменить вызов GetObject (JS) в Internet Explorer 9 и новее? 13hakta Internet Explorer 0 17.04.2014 15:21
Помогите найти в чем ошибка Pashok Элементы интерфейса 6 26.02.2013 20:20