-62 / 2 / 0
Регистрация: 12.11.2020
Сообщений: 407

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

21.12.2024, 10:54. Показов 2322. Ответов 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
Эксперт JSЭксперт HTML/CSS
 Аватар для krvsa
3847 / 1709 / 431
Регистрация: 14.03.2022
Сообщений: 4,363
21.12.2024, 19:37
Студворк — интернет-сервис помощи студентам
755, так и есть... Мы с тобой говорим о разном.

Я писал про получение данных запросом, используя тот же fetch()...
Твой же вариант - это динамическое подключение.
1
 Аватар для voraa
1294 / 1271 / 190
Регистрация: 21.01.2024
Сообщений: 5,878
21.12.2024, 19:43
Цитата Сообщение от 755 Посмотреть сообщение
Посмотрел пару серьезных сайтов, где работают профессиональные программисты (типа авито или яндекса) просто для интереса - в html странице было очень мало данных,
А сколько js и css посмотрели?
Не надо заниматься такой ерундой, как подгрузка маленького файла, только тогда, когда он понадобился.
(Ну или используйте модули).
Сейчас в сайтах используются кучи сторонних библиотек. И никто не переживает, что грузится 100К библиотеки, а реально из нее используется 3-4 функции.
1
-62 / 2 / 0
Регистрация: 12.11.2020
Сообщений: 407
21.12.2024, 20:59  [ТС]
Цитата Сообщение от krvsa Посмотреть сообщение
Я писал про получение данных запросом, используя тот же fetch()...
Твой же вариант - это динамическое подключение.
Спасибо, krvsa, хотя и удивился, что говорим о разном, ибо и мой вариант хоть и называется динамической загрузкой, но по умолчанию асинхронная. А вот изучение fetch(), когда о нем упоминали, оставил на потом - решил, что хватает и такой загрузки - по принципу, описанному ранее barabarОМ - вначале запуск сайта, а потом уже его улучшение или модификация. А самое главное, не увидел у него плюсов по сравнению с моим вариантом использования загрузки.

Цитата Сообщение от voraa Посмотреть сообщение
А сколько js и css посмотрели?
Совсем не смотрел, даже не разбирался, как можно смотреть. кстати и сам html смотрел только по причине - было интересно, используют ли они минификацию или нет.
Спасибо, voraa, за комментарий - теперь, действительно не буду в какой-то мере зацикливаться на том, как загружать файлы - тем более, что в плане реализации алгоритм может быть заметно проще - у меня иногда бывает при первоначальной динамической загрузке модулей функция не определена (ошибка понятна, файл не успел загрузиться, а я его на окончание загрузки не проверяю - алгоритм не доработан)

Но мы немного отклонились от темы вопроса.
А по нему у меня остался один к krvsa, если конечно не затруднит с ответом:
Цитата Сообщение от krvsa Посмотреть сообщение
либо в каждой функции объявлять их как локальные с ведением реестра таких данных на предмет корректировки ?
Это вообще ерунда.
Почему? Как раз думал остановиться на этом варианте
0
Эксперт JSЭксперт HTML/CSS
 Аватар для krvsa
3847 / 1709 / 431
Регистрация: 14.03.2022
Сообщений: 4,363
21.12.2024, 21:29
Цитата Сообщение от 755 Посмотреть сообщение
Почему?
Источник данных желательно иметь один, а не целый реестр того, где он находится.
1
 Аватар для voraa
1294 / 1271 / 190
Регистрация: 21.01.2024
Сообщений: 5,878
21.12.2024, 21:33
Цитата Сообщение от 755 Посмотреть сообщение
теперь, действительно не буду в какой-то мере зацикливаться на том, как загружать файлы - тем более, что в плане реализации алгоритм может быть заметно проще - у меня иногда бывает при первоначальной динамической загрузке модулей функция не определена (ошибка понятна, файл не успел загрузиться, а я его на окончание загрузки не проверяю - алгоритм не доработан)
Всякие динамические загрузки часто усложняют программу. Ведь приходится выносить в отдельную функцию то, что надо сделать, когда скрипт загрузится.
Что бы понять, что вам нужно, надо знать про какие объемы речь идет. У вас файлы с этими данными на десятки килобайт?
Почему их просто нельзя с самого начала статически подключать на тех страницах, где они нужны?
0
-62 / 2 / 0
Регистрация: 12.11.2020
Сообщений: 407
21.12.2024, 21:39  [ТС]
Цитата Сообщение от krvsa Посмотреть сообщение
Источник данных желательно иметь один, а не целый реестр того, где он находится
Спасибо, но, как часто бывает, каждый вариант имеет свои плюсы и минусы, вопрос в том, что перевешивает. А на мой взгляд не очевидно, что данный плюс (хотя и очень важный) перевешивает плюсы других вариантов (из тех. что увидел). По крайней мере, если это чисто текстовые визуальные поля.
0
21.12.2024, 21:50

Не по теме:

Помню работал я с одним челом. Решил он заняться ЗОЖ и приобрести себе велик. Решил это в начале весны. Очень ответственно к этой задаче подошёл. Стал разбираться во всех моделях и различных запчастях. Зарегился на вело-форуме и там тоже задавал вопросы. На работе постоянно сидел за компом, выбирая себе велик. В итоге купил бэушный только осенью, когда цены упали. Я тогда у него спросил: "Ну и нахрена он тебе сейчас? Уже начались дожди, а скоро полетят белые мухи. На велике сильно не поездишь".

0
-62 / 2 / 0
Регистрация: 12.11.2020
Сообщений: 407
21.12.2024, 21:55  [ТС]
Цитата Сообщение от voraa Посмотреть сообщение
Всякие динамические загрузки часто усложняют программу. Ведь приходится выносить в отдельную функцию то, что надо сделать, когда скрипт загрузится.
Действительно с этим столкнулся.. Хотя и не существенно. Как упомянул из десятка файлов, для одной функции надо ставить проверку готовности загрузки. Пока больше ошибок не всплывало.

Цитата Сообщение от voraa Посмотреть сообщение
Что бы понять, что вам нужно, надо знать про какие объемы речь идет. У вас файлы с этими данными на десятки килобайт?
Почему их просто нельзя с самого начала статически подключать на тех страницах, где они нужны?
Пока поступал 2 способами: либо как глобальная переменная (константа), если предполагаю, что она будет использоваться в большинстве страниц либо путем дублирования как const непосредственно в функции (но понял, что надо выработать по возможности единый алгоритм, чтобы потом не запутаться), т.е. именно статически на тех страницах, где они нужны (если правильно понял термин страницы). Если да, то именно такой вариант по мнению krvsa далеко не лучший.

Добавлено через 4 минуты
Цитата Сообщение от barabar Посмотреть сообщение
Я тогда у него спросил: "Ну и нахрена он тебе сейчас? Уже начались дожди, а скоро полетят белые мухи. На велике сильно не поездишь".
Вполне разумный подход при покупке серьезной вещи. Он не на один сезон - поездит со следующего года.
В свое время покупали байдарки (годах в 90-х). Еще в том году плавали по Оке.
Ps.
Обычно комментарии не по теме на самом деле имеют отношение к теме (вспоминая ту же мисс Марпл). Но признаюсь, не хватило ума и не уловил связи.
Правда иногда и совсем не по теме не помешает.
0
 Аватар для voraa
1294 / 1271 / 190
Регистрация: 21.01.2024
Сообщений: 5,878
21.12.2024, 21:59
Цитата Сообщение от 755 Посмотреть сообщение
Пока больше ошибок не всплывало.
Не всплывало - не значит, что не всплывут. При работе на реальном сервере любые затыки могут быть.
Цитата Сообщение от 755 Посмотреть сообщение
либо путем дублирования как const непосредственно в функции
Это вообще никуда не годится. Зачем в каждой функции иметь одинаковые данные? И их в каждой функции грузить? Или я чего то глобально не понимаю. Вы хоть примерно кодом упрощенным покажите.

Добавлено через 2 минуты

Не по теме:

Цитата Сообщение от barabar Посмотреть сообщение
Я тогда у него спросил: "Ну и нахрена он тебе сейчас? Уже начались дожди, а скоро полетят белые мухи. На велике сильно не поездишь".
По Москве курьеры сейчас только так носятся.
Да что курьеры, у меня сосед (возраст за 70) на велике ездит. Вот буквально вчера видел его с великом

1
Заблокирован
21.12.2024, 22:06
Цитата Сообщение от 755 Посмотреть сообщение
Вполне разумный подход при покупке серьезной вещи.
Бэушный велик такая же серьёзная вещь, как и твой сайт. Знаешь что самое главное в сайтостроении? Самое главное это идея. Сама реализация это мелочи. Сейчас вообще можно код писать с помощью ИИ. Чел потратил многие часы, что бы выбрать себе бэушный велик. Мог бы потратить это время намного интереснее. Я всё лето ездил на работу на велике, а он всё лето выбирал себе. Так и ты вместо того, что бы делать сайт занимаешься ерундой. Что бы научиться программировать - надо программировать. Это не я сказал. Но сказано очень верно.

Добавлено через 2 минуты
Цитата Сообщение от voraa Посмотреть сообщение
Вот буквально вчера видел его с великом
По грязи не наездишься. Я пока головой не тронулся, что бы под дождем ездить на велосипеде.
0
-62 / 2 / 0
Регистрация: 12.11.2020
Сообщений: 407
21.12.2024, 22:16  [ТС]
Цитата Сообщение от voraa Посмотреть сообщение
Не всплывало - не значит, что не всплывут. При работе на реальном сервере любые затыки могут быть.
Спасибо, буду иметь в виду.

Цитата Сообщение от voraa Посмотреть сообщение
Это вообще никуда не годится. Зачем в каждой функции иметь одинаковые данные? И их в каждой функции грузить? Или я чего то глобально не понимаю. Вы хоть примерно кодом упрощенным покажите.
На счет каждой функции не все так однозначно. А как пример постараюсь подготовить завтра на свежую голову - тут не просто надо будет что-то скопировать.

Поэтому пока попрощаюсь с благодарностью за участие
0
-62 / 2 / 0
Регистрация: 12.11.2020
Сообщений: 407
22.12.2024, 13:17  [ТС]
voraa, публикую пример кода.
Подчеркиваю, пример не рабочий, ибо цель темы - выработать алгоритм.

1.html
HTML5
1
2
3
4
5
6
7
8
9
10
<div id="dKn_dat" class= "rsp "> </div>
<div id="men_dat" class= "rsp "> </div> 
<button  onclick="get_frm ();">Вывод экранной формы </button>
 
<script>
var i_perDat = 0;
let m_periodDat = new Array;
 m_periodDat = ["Сутки",   "Неделя",  "Месяц",  "Квартал" ];
document.querySelector("#dKn_dat").innerHTML = '<button id="kn_dat"  onclick="get_knDat(0);">'+m_periodDat [i_perDat]+'</button>';
</script>
1.js
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
{
  let m_periodDat = new Array;
  m_periodDat = ["Сутки",   "Неделя",  "Месяц",  "Квартал" ];
 
  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").innerHTML = st;
    document.addEventListener('keydown', get_key );
  }
 
  function get_key (e) {
    switch (e.keyCode) {
    case 13:            // Ret
        document.querySelector("#kn_dat").textContent = m_periodDat [i_perDat];
        document.removeEventListener('keydown', get_key);   
        break;
    }
  }
}
Формирование экранной формы и вывод на экран

вариант 1 (php формирует ЭФ и в ней же m_periodDat[] )
JavaScript
1
2
3
 function get_frm (e) {
    вызывается через аякс 1.php и передается параметр - индекс m_periodDat
 }
PHP
1
2
3
 $m_k_sek= array ("Сутки",   "Неделя",  "Месяцв",  "Квартал" );
 ...
 echo "<br>Период: ". $query;

вариант 2 (php только формирует данные, а m_periodDat[] выводится в js )
2.js
JavaScript
1
2
3
4
 function get_frm () {
    // вывод экранной формы
    document.querySelector("#__").innerHTML = m_periodDat [i_perDat];
}
Если надо, могу прокомментировать (не стал сразу, потому что они займут не одну строку)

Кстати, в 1.js группу функций, выполняющих одну задачу объединил скобками { } . Не могу вспомнить,
придумал ли сам такую комбинацию (проверил, у меня работает) или нашел в каком-то источнике.
Было бы интересно узнать, можно ли так использовать и есть ли у такого блока функций термин - искал в интернете под данным термином - не нашел.
0
Заблокирован
22.12.2024, 13:23
Цитата Сообщение от 755 Посмотреть сообщение
let m_periodDat = new Array;
 m_periodDat = ["Сутки",   "Неделя",  "Месяц",  "Квартал" ];
Это очень экономично
Цитата Сообщение от 755 Посмотреть сообщение
вызывается через аякс 1.php и передается параметр - индекс m_periodDat
Это вообще супер А что аяксом подтягивать будешь? Неужели в файле php будет просто массив? Раз такое дело с аяксом, то надо этот массив в базу данных засунуть и потом по запросу оттуда доставать
0
-62 / 2 / 0
Регистрация: 12.11.2020
Сообщений: 407
22.12.2024, 13:35  [ТС]
Цитата Сообщение от barabar Посмотреть сообщение
Это вообще супер
Смотрю на смайлик и ухмылку
и думаю, это ирония или действительно супер - вроде бы решение казалось самым обычным.


Цитата Сообщение от barabar Посмотреть сообщение
Неужели в файле php будет просто массив? Раз такое дело с аяксом, то надо этот массив в базу данных засунуть и потом по запросу оттуда доставать
Такой вариант - размещение данных в базе упоминал ранее просто как вариант, но не думаю, что это разумное решение: если бы программа была бы просто для себя - тогда да, это было бы наилучшим вариантом. Но, если будет скажем, хотя бы 100 000 посетителей/сутки, то для каждого из них обращаться в базу за такими данными - думаю, очень плохое решение.
0
Заблокирован
22.12.2024, 13:49
755, перфекционист это диагноз.
Цитата Сообщение от 755 Посмотреть сообщение
Но, если будет скажем, хотя бы 100 000 посетителей/сутки
Никогда у тебя столько не будет. Поверь мне. Тебе хотя бы доделать до конца, что задумал. У меня в этом есть большие сомнения. С таким подходом маловероятно. Два дня разбираться куда массив засунуть. Это пипец...
Другие тебе тоже сказали, что эти несколько строк ни на что не влияют. Сколько байт там? Даже килобайта не будет. А сейчас в инэте есть ресурсы где при открытии страницы грузятся мегабайты.

Добавлено через 49 секунд
Цитата Сообщение от 755 Посмотреть сообщение
это ирония или действительно супер
Это ирония.
0
Эксперт JSЭксперт HTML/CSS
 Аватар для krvsa
3847 / 1709 / 431
Регистрация: 14.03.2022
Сообщений: 4,363
22.12.2024, 13:52
Цитата Сообщение от 755 Посмотреть сообщение
Но, если будет скажем, хотя бы 100 000 посетителей/сутки, то для каждого из них обращаться в базу за такими данными - думаю, очень плохое решение.
Это обычное дело...

Если данные нужны такому большому числу посетителей - их так и будут раздавать.
1
 Аватар для voraa
1294 / 1271 / 190
Регистрация: 21.01.2024
Сообщений: 5,878
22.12.2024, 14:05
Зачем тянуть из php если они там не вычисляются как то, а статические?
Можно просто fetch закачивать из json
0
-62 / 2 / 0
Регистрация: 12.11.2020
Сообщений: 407
22.12.2024, 14:09  [ТС]
Цитата Сообщение от barabar Посмотреть сообщение
Никогда у тебя столько не будет. Поверь мне. Т
Время покажет.
Будет намного больше, чем 100 000 - поверь мне.
Цитата Сообщение от barabar Посмотреть сообщение
Два дня разбираться куда массив засунуть. Это пипец..
• во-первых, не трачу 2 дня ибо параллельно идет процесс и этот вопрос больше рассчитан на будущее
• во-вторых, и это самое важное, хотя и потратил немало времени на данную тему, но надо быть непорядочным и неблагодарным, чтобы не отвечать на комментарии, ибо сам обратился за помощью и другие тратят свое время на меня.

Цитата Сообщение от barabar Посмотреть сообщение
Это ирония.
Непонятна ирония, ибо не претендовал на что-либо данным примером.
0
Заблокирован
22.12.2024, 14:20
Цитата Сообщение от 755 Посмотреть сообщение
Будет намного больше, чем 100 000 - поверь мне.
10 посетителей в сутки это твой максимум. Я знаю о чём говорю. И даже эти 10 посетителей из круга твоих знакомых и родственников.
Хостинг уже выбрал? Надо уже начинать... за год разберешься и выберешь самый подходящий
0
-62 / 2 / 0
Регистрация: 12.11.2020
Сообщений: 407
22.12.2024, 14:36  [ТС]
Цитата Сообщение от voraa Посмотреть сообщение
Зачем тянуть из php если они там не вычисляются как то, а статические?
Можно просто fetch закачивать из json
voraa, php привел как возможный вариант, что и там м.б. объявлена константа и в таком случае данные уже дублируются, если их не разместить в БД.
Реально же пока в php передаю только индекс массива и уже он является фильтром для выборки данных. А статичная информация из массива выводится в другой функции js (get_frm ()). Объединить их все в один блок не думаю разумным решением, ибо они (функции) относятся к разным задачам. И получается то, о чем вы с krvsa, говорили ранее: такие данные д.б. в одном месте (если правильно понял)

fetch когда-то ранее упоминали в другой теме - посмотрел, решил что пока он не стоит того, чтобы тратить время на егоь изучение (могу обойтись и без него). Но, возможно, не прав -надо будет вернуться к нему. Спасибо всем.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
22.12.2024, 14:36
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Опции темы

Новые блоги и статьи
Асинхронный приём данных из COM-порта
Argus19 01.05.2026
Асинхронный приём данных из COM-порта Купил на aliexpress термопринтер QR701. Он оказался странным. Поключил к Arduino Nano. Был очень удивлён. Наотрез отказывается печатать русские буквы. Чтобы. . .
попытка написать игровой сервер на C++
pyirrlicht 29.04.2026
попытка написать игровой сервер на плюсах с открытым бесконечным миром. возможно получится прикрутить интерпретатор питон для кастомизации игровой логики. что есть на текущий момент:. . .
Контроль уникальности выбранного документа-основания при изменении реквизита
Maks 28.04.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРемонтСпецтехники", разработанного в КА2. Задача: уведомлять пользователя, если указанная заявка (документ-основание). . .
Благородство как наказание
Maks 24.04.2026
У хорошего человека отношения с женщинами всегда складываются трудно. А я человек хороший. Заявляю без тени смущения, потому что гордиться тут нечем. От хорошего человека ждут соответствующего. . .
Валидация и контроль данных табличной части документа перед записью
Maks 22.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в КА2. Задача: контроль и валидация данных табличной части документа перед записью с учетом регламента компании. . .
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru