Форум программистов, компьютерный форум, киберфорум
JavaScript для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
-62 / 2 / 0
Регистрация: 12.11.2020
Сообщений: 407

Оптимальный алгоритм формирования констант при использовании их в в разных местах кода

21.12.2024, 10:54. Показов 2364. Ответов 60
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Подумал, не помешает обратиться за советом, м.б. кто-нибудь более умный подскажет вариант, который не увидел:

Формируются исходные данные, например массив регионов:
JavaScript
1
m_reg = new Array ("Москва и область", "Нижний Новгород и область");
Данные данные используются в разных частых кода (функциях).
Возможно, потребуется данный массив отредактировать или добавить новый регион.
Не могу решить вопрос, где и как размещать такие данные .

Какие вижу варианты:
• Объявлять в каждой функции как const ?
Но, если их (данные) объявлять в каждой из них, есть вероятность, что где-то можно забыть внести исправления.

• Во многих источниках написано, что использование глобальных переменных - плохой тон. Хотя сам и придерживаюсь иной точки зрения, но в данном случае (если такие данные не распространяются на весь код) считаю этот вариант неразумным (особенно, если таких данных м.б. много).

• Использовать БД ? Вряд ли лучший вариант

• Динамическая загрузка таких данных ? Но, опять же, если их много и они используются в разных местах кода будет ли она оптимальной ?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
21.12.2024, 10:54
Ответы с готовыми решениями:

lwjgl и баг(артефакты в разных местах при повторе одного и того же кода)
Всем доброго вечера. Недавно занимаюсь c lwjgl. Вот просто рисуя старым добрым способом от руки, заметил вот такую интересную вещь. Может...

lwjgl и баг(артефакты в разных местах при повторе одного и того же кода)
Всем доброго вечера. Недавно занимаюсь c lwjgl. Вот просто рисуя старым добрым способом от руки, заметил вот такую интересную вещь. Может...

Отображение кода в разных местах на разных разрешениях
Всем доброго времени суток! Возникла задача отображать код в разных местах на разных разрешениях. Прилагаю картинку, там все...

60
 Аватар для voraa
1296 / 1282 / 190
Регистрация: 21.01.2024
Сообщений: 5,935
22.12.2024, 18:09
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от 755 Посмотреть сообщение
что пока он не стоит того, чтобы тратить время на егоь изучение
Так много не напишешь, если не изучать основ, которые в практике встречаются постоянно.
1
Заблокирован
22.12.2024, 18:28
Цитата Сообщение от voraa Посмотреть сообщение
Так много не напишешь, если не изучать основ
Не переживай за него. Он вообще ничего не напишет. Пока будет собираться - поезд давно уйдет
0
-62 / 2 / 0
Регистрация: 12.11.2020
Сообщений: 407
31.12.2024, 03:29  [ТС]
Решил, что надо все-таки подвести итог по данной теме - не могу написать: тема закрыта, т.к. ответа на вопрос не увидел. Хотя, возможно ответом и является отсутствие однозначного решения на данный вопрос.
И однозначно получил пользу от ответов в данной теме.

И главное, почему вернулся к теме.

Не по теме.

barabar, информирую вас, что не хочу принимать любую помощь от вас и, соответственно, отвечать на ваши комментарии, а самое главное: быть вам за это обязанным и испытывать чувство благодарности.

Объяснение:
Почему написал именно здесь, а не отправил личное сообщение: из данной темы следует причина такого решения.
0
Заблокирован
31.12.2024, 08:57
Цитата Сообщение от 755 Посмотреть сообщение
barabar, информирую вас, что не хочу принимать любую помощь от вас и, соответственно, отвечать на ваши комментарии
Знаешь, ты уже ответил. Вот так. Мне тоже многое не хочется, но реальная жизнь учит приспосабливаться. Согласен быть присполосблемцем?

Добавлено через 6 минут
Ребята и все в этой теме. Извините меня, но я знаю о чём говорю. Он никогда и ничего не сделает. Это просто по определению. Он будет сопли жевать жевать. Потом выплюнет и начнет жевать еще одну соплю. Я таких уже видел. Соплежуй его определение)

Добавлено через 7 минут
Многие подумают. А хрена он так негативно относится к человеку которого не знает? Так мне и знать не надо. И даже фотографии не нужны. Всё и так понятно. Как на дактилоскопии. Это фуфло. Человек-фуфло.
0
 Аватар для voraa
1296 / 1282 / 190
Регистрация: 21.01.2024
Сообщений: 5,935
31.12.2024, 09:04
Цитата Сообщение от barabar Посмотреть сообщение
Многие подумают.
А надо ли в программистких темах переходить на личности? Вопросы по программированию. Можешь и хочешь ответить - ответь, не хочешь отвечать - иди мимо.
0
Заблокирован
31.12.2024, 09:34
Цитата Сообщение от voraa Посмотреть сообщение
Вопросы по программированию.
Здесь нет никакого програмирования. До сих пор не понял? Это тупак.
0
-62 / 2 / 0
Регистрация: 12.11.2020
Сообщений: 407
03.01.2025, 12:26  [ТС]
Извините, модераторы, что возвращаюсь к данной теме, но преследую 2 цели:

• Поблагодарить voraa, за последний комментарий.

Хотя в отношении последних комментариев добавлю, на оскорбления стараюсь не обращать внимание. А в данном случае порадовала моя проницательность в оценке человеческих качеств. Хотя, признаюсь, наверное, не ожидал такой реакции на мое обращение. Еще даже думал над его формой: ПОПРОСИТЬ меня игнорировать или написать в форме решения (тогда и вспомнил здесь же на форуме любопытный диалог:
молодая женщина: мне неприятно, что Вы обращаетесь ко мне на ты.
ответ: мне так удобнее ( !!! мне наплевать на ваши чувства (извините за данный глагол, но он лучше подчеркивает смысл фразы) - комментарий для тех, кто не улавливает его)

barabar, возможно, задумаетесь и посмотрите на себя со стороны, ибо совершенно не правильно оценили причины моего решения.
Мне совершенно безразлично ваше мнение, запущу ли сайт или нет - по этому поводу вспомнилась хорошая пословица "собака лает, караван идет", о которой не вспоминал очень много лет. И по этому поводу вспомнил еще одну фразу, нашего ротного: "спешка нужна при ловле блох, при поносе и, когда спишь с чужой женой". Хотя вы и правы, что затягивая можно опоздать.
Но, когда человек начинает иронизировать без веских на то оснований- можно предположить, что у него порочная черта характера (мой брат, будучи молодым, имел такую черту (пару раз его высокомерие меня даже задевало) - но он мог себе это позволить - при своем благородстве он был на порядок умнее большинства своих ровесников и меня в том числе, чего не могу сказать о данном случае - меня это совершенно не задело, ибо было не по существу). Возможно было и еще что-то, но сейчас уже не помню. Последние же ваши комментарии очень ясно показали, что не ошибся с своей оценкой.

Ps
По поводу: Здесь нет никакого программирования.
Данная тема набрала более 1000 просмотров, что присуще далеко не каждой теме. И не важно, что в данном случае мин 30 % текста - не по теме (по крайней мере не относятся к программированию - возможно, вы не понимаете, что алгоритмизация - это тоже часть программирования и, на мой взгляд, даже более важная; хотя думаю, что вами двигала та же язвительность ) - из заголовка это не следует.

Добавлено через 21 минуту
И по-моему, нет ничего страшного, если кто-то не хочет иметь к кем-то дело - всем понравиться не возможно - как сказал мне один мой друг, ты тоже не все нравишься и не все тебя понимают.
0
Эксперт .NET
 Аватар для Usaga
14364 / 9465 / 1360
Регистрация: 21.01.2016
Сообщений: 35,689
07.01.2025, 10:36
Цитата Сообщение от 755 Посмотреть сообщение
function get_knDat () {
    for (i= 0; i< m_periodDat.length; i++)  {
     st += '<div id="d_'+i +'" class="stl_1">\
        <button id="b_'+i +'" class="st_men" onclick="'+ nam_func+' ('+i +');"> '+
        m_periodDat [i]+
        ' </button> </div>\
        ';
    }
    document.querySelector("#men_dat").inner HTML = st;
    document.addEventListener('keydown', get_key );
  }
Гляжу я на этот код и складывается ощущение, что проблема тут не в массивах, а в том, что ты не знаешь что такое "компонент" - переиспользуемый блок кода и разметки. Такое можно и руками сделать, но это будет многословно. Можно использовать миллион разных библиотек и фреймворков. Но тебе явно рано ещё заглядываться на это. Можно использовать WebComponents, которые уже всеми актуальными браузерами поддерживаются. Не так удобно и гибко, как при использовании фреймворков, но сильно лучше, чем каша в твоём примере.

Цитата Сообщение от 755 Посмотреть сообщение
let m_periodDat = new Array;
  m_periodDat = ["Сутки",   "Неделя",  "Месяц",  "Квартал" ];
Ну и учебник по JavaScript почитать надо бы.

И про модули тебе верно заметили. Вещь нужная и полезная. Прервись со своей задачей и изучи работу с модулями. Модули в твоей задаче будут полезны, будешь ли ты компонеты делать или пытаться переиспользовать массивы эти в разных частях кода.
1
-62 / 2 / 0
Регистрация: 12.11.2020
Сообщений: 407
07.01.2025, 12:23  [ТС]
Usaga, спасибо за советы.

О компоненте, похоже, действительно не слышал. Бегло глянул, но пока не увидел прямой и удобной связи между компонентами и константами (в т.ч. массивами) js. Займусь.

С модулями же начинал знакомство , но они мне не понравились (точнее, решил что будет достаточно динамической загрузки файлов) - в другой теме мне их рекомендовали (как раз, если не ошибаюсь в связи с загрузкой файлов). И, наверное, будет правильнее их обсуждать в отдельной теме - ибо это интересный сам по себе вопрос.

Ps.
Цитата Сообщение от Usaga Посмотреть сообщение
Прервись со своей задачей
Не могу - планировал показать знакомому программисту (и ему озвучил) сделанное сразу после Нового года, но есть важные моменты, которые хотел бы доработать.
0
 Аватар для voraa
1296 / 1282 / 190
Регистрация: 21.01.2024
Сообщений: 5,935
07.01.2025, 12:30
Цитата Сообщение от 755 Посмотреть сообщение
С модулями же начинал знакомство , но они мне не понравились (точнее, решил что будет достаточно динамической загрузки файлов) - в другой теме мне их рекомендовали (как раз, если не ошибаюсь в связи с загрузкой файлов)
Ни динамическая загрузка, ни модули не спасают от одной проблемы. Данные могут измениться. А браузер будет хватать старые из кеша. Решения, конечно есть, но все это костыльно. Данные надо грузить используя fetch.
1
Эксперт .NET
 Аватар для Usaga
14364 / 9465 / 1360
Регистрация: 21.01.2016
Сообщений: 35,689
07.01.2025, 12:35
Цитата Сообщение от 755 Посмотреть сообщение
но пока не увидел прямой и удобной связи между компонентами и константами (в т.ч. массивами) js
Конкретно тут я вижу, что тебе нужна пачка однотипных кнопок (как раз решается компонентами), которые отличаются друг от друга только значением некоего периода. И эти кнопки эти значения потом как-то стараются использовать. И ты в двух местах массивчик заиспользовал: в одном, чтобы каждой кнопке задать метку, а во втором, чтобы в обработчике кнопки как-то использовать.

Мой совет про компонент исходит из следующего: формируешь компонент "кнопка с периодом" (назови как удобнее), который через параметры принимает название периода и использует его как в метке, так и в обработчике. Соответственно, тебе массив периодов вообще становится не нужен ни в каком виде.

Цитата Сообщение от 755 Посмотреть сообщение
С модулями же начинал знакомство , но они мне не понравились
Значит тебе просто пока не хватило компетенции понять чудовищную пользу и мощь этого механизма. Мой тебе совет: даже если тебе кажется, что это что-то не очень нужно, перебори себя и заставь себя изучить это дело.

Цитата Сообщение от 755 Посмотреть сообщение
Не могу - планировал показать знакомому программисту (и ему озвучил) сделанное сразу после Нового года, но есть важные моменты, которые хотел бы доработать.
Я это к чему. Работа над твоей задачей займёт МЕНЬШЕ времени, если ты изучишь те несколько вещей, которые выше обозначены.
1
-62 / 2 / 0
Регистрация: 12.11.2020
Сообщений: 407
07.01.2025, 12:56  [ТС]
Цитата Сообщение от Usaga Посмотреть сообщение
Конкретно тут я вижу, что тебе нужна пачка однотипных кнопок (как раз решается компонентами), которые отличаются друг от друга только значением некоего периода. И эти кнопки эти значения потом как-то стараются использовать. И ты в двух местах массивчик заиспользовал: в одном, чтобы каждой кнопке задать метку, а во втором, чтобы в обработчике кнопки как-то использовать.
Думаю, неверное толкование: кнопки - это только фасад. Исходное - именно данные (отсюда и заголовок темы) - которые постоянны, но в тоже время м.б. изменены, а может быть и нет (например, для этого примера (сразу не предусмотрели) потребовалось добавить новый период) (и это изменение д.б. отражено во всех элементах).
На основании этих данных:
- по индексу массива формируются кнопки с названием периода
- на сервер передается именно индекс, и уже там (в данном случае php определяет соответствующий период и формирует согласно нему выходные данные)
- Вполне вероятно, что индекс еще может храниться в какой либо таблице

Кроме того, возможно и какой-то вариант использования таких данных упустил - главная мысль они постоянны и используются в разных местах.

Т.е. данный массив используется и на сервере и на клиенте, а кроме того и в разных частях кода.

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


Ps.
В отношении остального - услышал. Еще раз спасибо.
0
Эксперт .NET
 Аватар для Usaga
14364 / 9465 / 1360
Регистрация: 21.01.2016
Сообщений: 35,689
07.01.2025, 12:58
Цитата Сообщение от 755 Посмотреть сообщение
но в тоже время м.б. изменены
Пользователем?
0
-62 / 2 / 0
Регистрация: 12.11.2020
Сообщений: 407
07.01.2025, 13:19  [ТС]
Цитата Сообщение от voraa Посмотреть сообщение
Решения, конечно есть, но все это костыльно. Данные надо грузить используя fetch.
Спасибо, voraa, это серьезный аргумент.

Цитата Сообщение от Usaga Посмотреть сообщение
но в тоже время м.б. изменены
Пользователем?
Нет, разработчиком/программистом, возможно администратором - в зависимости от данных
0
Эксперт .NET
 Аватар для Usaga
14364 / 9465 / 1360
Регистрация: 21.01.2016
Сообщений: 35,689
07.01.2025, 13:22
Цитата Сообщение от 755 Посмотреть сообщение
Нет, разработчиком/программистом, возможно администратором - в зависимости от данных
Так разработчиком или администратором? Это разные вещи.

В любом случае, если это можно менять наживую, то данные хранятся в базе. Значит фронт их должен брать через fetch (AJAX). Иначе... Ну, брать из кода.
0
-62 / 2 / 0
Регистрация: 12.11.2020
Сообщений: 407
07.01.2025, 13:50  [ТС]
Цитата Сообщение от Usaga Посмотреть сообщение
Так разработчиком или администратором? Это разные вещи.
Понимаю. Какие-то данные будут изменяться разработчиком (зависит от степени сложности, ), какие-то администратором (от необходимости и возможности оперативного изменения)

Пока рассматривал данные, изменяемые Разработчиком.
Такие данные могут храниться как в базе (как и озвучили в данной теме), так и в коде.

Мне лично не нравится хранение таких данных в базе, ибо придется при формировании разных страниц обращаться на сервер и, если этого можно избежать, предпочел бы их размещать в коде или потом сохранять в Storage

Но, боюсь что у меня в Storage может оказаться много информации и придется выбирать, чем жертвовать (но это уже отдельная тема)
0
 Аватар для voraa
1296 / 1282 / 190
Регистрация: 21.01.2024
Сообщений: 5,935
07.01.2025, 13:54
Цитата Сообщение от 755 Посмотреть сообщение
предпочел бы их размещать в коде или потом сохранять в Storage
А как решать проблему кеша?
Откуда браузер пользователя узнает, что данные изменились и надо взять новые, а не из кеша или сторедж?
0
Эксперт .NET
 Аватар для Usaga
14364 / 9465 / 1360
Регистрация: 21.01.2016
Сообщений: 35,689
07.01.2025, 13:56
Цитата Сообщение от 755 Посмотреть сообщение
какие-то администратором (от необходимости и возможности оперативного изменения)
Так про этот момент я не понял. Он что, в КОД полезет? На живом сервере?

Цитата Сообщение от 755 Посмотреть сообщение
Мне лично не нравится хранение таких данных в базе, ибо придется при формировании разных страниц обращаться на сервер
Ну да. А что в этом плохого? Если предполагается, что данные не являются статическими, то им место там, где их можно изменить.
0
-62 / 2 / 0
Регистрация: 12.11.2020
Сообщений: 407
07.01.2025, 14:02  [ТС]
Цитата Сообщение от voraa Посмотреть сообщение
А как решать проблему кеша?
Откуда браузер пользователя узнает, что данные изменились и надо взять новые, а не из кеша или сторедж?
voraa, на счет кеша ничего не могу ответить, как он устроен в браузере и как его очищать - не изучал (возможно, потому что на локалке у меня все прекрасно работает).

А вот со Storage проблем нет - его активно использую, и сразу запуск сайта начинаю с анализа на наличие в нем данных, которые и являются для меня первичными. И естественно сама программа отвечает за актуальность данных в нем ( в том числе и корректирует их)
0
 Аватар для voraa
1296 / 1282 / 190
Регистрация: 21.01.2024
Сообщений: 5,935
07.01.2025, 14:16
Подобный абстрактный разговор про некие абстрактные данные начинает немного надоедать.
Не зная, какие данные, как часто и кем они меняются, посоветовать конкретно ничего нельзя.
Есть стандартные варианты данных и их использование.
Если данные меняются часто и требуются не все, а выборочно по каким то сложным запросам - то БД.
Если данные меняются не часто, но обычно требуется весь массив, то можно использовать json - его и фронт может загрузить, и бек (на php) прочитать.
А всякие костыли с динамической загрузкой скриптов - это от незнания и неумения
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
07.01.2025, 14:16

Изменение глобальных констант при разных процедурах
Здравствуйте, появилась проблема с имзенением глобальных констант. У меня есть игра Сапёр, в которой нужно создать режимы...

Ошибка при использовании WordApplication для формирования отчета
Программа формирует выходной документ Word, используя для этого данные из таблиц BDE. Выходной документ имеет определенный строгий формат,...

Построить несколько графиков параметрически заданной функции при разных значениях констант а, b, λ
Построить несколько графиков параметрически заданной функции при разных значениях констант а, b, λ. Оси графика – х и y, которые...

Как построить несколько графиков параметрически заданной функции при разных значениях констант а, b, λ
Построить несколько графиков параметрически заданной функции при разных значениях констант а, b, λ. Оси графика – х и y, которые...

Построить несколько графиков параметрически заданной функции при разных значениях констант а, b, λ. Оси графика – х и y, которые зависят от аргумен
Построить несколько графиков параметрически заданной функции при разных значениях констант а, b, λ. Оси графика – х и y, которые...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
60
Ответ Создать тему
Новые блоги и статьи
Алиса нашла кучу ошибок компиляции и запуска в проекте, который без проблем компилировался и запускался)))
anaschu 30.06.2026
Я пока посмеюся, но завтра проверю. А вообще интерсно. Дал алисе файл, в котором точно нет ошибок компиляции и запуска, и попросил их найти. Нашла кучу))) Критические ошибки, мешающие компиляции и. . .
сукцессия 16. Общий обзор, в основном что бы другие ии поняли
anaschu 29.06.2026
# Передаточный документ: модель микоризной сукцессии (для нового чата) Этот документ предназначен для того, чтобы новый чат Claude мог продолжить работу без необходимости заново разбираться в. . .
сукцессия 15 неявная схема
anaschu 29.06.2026
Алиса Калибровка параметров симбиотической модели: технический обзор Содержание: Введение Постановка проблемы Технические аспекты реализации Процесс внедрения изменений
сукцессия 14. Обновленная схема модели
anaschu 28.06.2026
ГЛОБАЛЬНАЯ ОПИСАТЕЛЬНАЯ СПЕЦИФИКАЦИЯ ЭКОСИСТЕМНОЙ МОДЕЛИ «SOIL CHEMISTRY & MYCORRHIZA 2. 0» https:/ / ibb. co/ NnkGpfMd Представленная интегрированная схема описывает непрерывную нелинейную. . .
сукцессия 13. Питон модель трехзонного мицелия, пока что в основном арбускулярного
anaschu 28.06.2026
## Разработка агентной модели микоризной сукцессии: от выявления артефактов к созданию комплексной системы ### Аннотация Представлено исследование по разработке агентной модели микоризной. . .
сукцессия 12. краткий список проверок модели перед запуском.
anaschu 27.06.2026
Скрытые отказы в моделях систем динамики (SD-models) экологических систем: два случая из практики Контекст Разбирался прототип модели систем динамики (SD-модели) микоризной сукцессии: пять. . .
Сукцессия 11. Проверка орудий перед войной: разработка через тестирование
anaschu 27.06.2026
Как не дать модели соврать самой себе: проверки для симуляции микоризной сукцессии Введение Когда вы строите математическую модель живой системы — грибов, растений, почвы — главная опасность. . .
10 сукцессия. Питон код войны грибов и растений
anaschu 27.06.2026
import numpy as np class PlantAgent: def __init__(self, name, strategy, initial_biomass): self. name = name self. strategy = strategy # "greedy" (широколиственные) или. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru