реклама на сайте
подробности

 
 
> Использование глобальных переменных
demiurg1978
сообщение Jan 9 2017, 18:26
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 333
Регистрация: 19-12-13
Из: Новосибирск
Пользователь №: 79 709



Хочу узнать мнение насчет использования глобальных переменных. Спрашиваю вот почему: неоднократно слышал, что использование глобальных переменных нужно максимально минимизировать. Откуда пошло это? В данный момент пишу проект. Свои проекты всегда стараюсь разделить на модули. static переменные. использование в других модулях посредством set_value (); get_value ();. Но в нынешнем проекте у меня много параметров. И если честно, я заколебался на каждую переменную писать свои функции установки и получения переменных. Хочу вывести переменные из static в глобальные.
Ваши за и против.

Сообщение отредактировал demiurg1978 - Jan 9 2017, 18:27
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
aiwa
сообщение Jan 12 2017, 12:39
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 301
Регистрация: 13-12-15
Из: Харьков
Пользователь №: 89 682



Цитата(scifi @ Jan 11 2017, 10:31) *
Неправда. static позволяет не засорять глобальное пространство имён. Скажем, если в программе два десятка модулей, и в каждом - десяток своих переменных, то это уже 200 глобальных переменных. Кому нужен этот бардак?

Ну бардак все-таки не хаос. Переменные видимы в определенном порядке и избыточное количество не критично: пусть лучше уж валяется в глобальном списке, чем тратить на нее семиразовое нажатие клавиш. И реальная необходимость возникла не из-за "засорять", а именно "спрятать" от второго. Но это уже флейм, ибо Вы обрезали главное: один программист - сам себе хозяин. И перевод из static в глобальную особого значения не имеет: насколько я понимаю имелись ввиду переменные static исключительно внутри функции.
Но чтобы следовать упомянутому ТС принципу "использование глобальных переменных нужно максимально минимизировать" перевода из static в глобальные недостаточно, нужно перевести эту переменную в параметры. Этот принцип никак не регламентирует количество глобальных переменных.

Было:
void func()
{
static int value =0;
//
модифицирующий код value;
}

Стало:
int value =0;

void func(int* value)
{
//
модифицирующий код value;
}







Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Jan 14 2017, 10:53
Сообщение #3


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



QUOTE (aiwa @ Jan 12 2017, 14:39) *
Переменные видимы в определенном порядке и избыточное количество не критично: пусть лучше уж валяется в глобальном списке, чем тратить на нее семиразовое нажатие клавиш. И реальная необходимость возникла не из-за "засорять", а именно "спрятать" от второго. Но это уже флейм, ибо Вы обрезали главное: один программист - сам себе хозяин. И перевод из static в глобальную особого значения не имеет
Из соседней ветки:
QUOTE (Mister_DSP @ Jan 13 2017, 08:13) *
Создаю библиотеку (lib) в Keil по исходникам из множества файлов.
Затем получившуюся библиотеку пристыковываю к другому проекту (главному).

При линковке выдаёт ошибку: найдены одинаковые имена в libfile.o и module.o

Исходные тексты программ не моего авторства, около 100 имён совпадает, так что переименовывать не вариант.


Попробуйте убедить его, что он сам себе хозяин и static значения не имеет wink.gif


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- demiurg1978   Использование глобальных переменных   Jan 9 2017, 18:26
- - zltigo   Цитата(demiurg1978 @ Jan 9 2017, 20:26) н...   Jan 9 2017, 19:22
- - desh   Цитата(demiurg1978 @ Jan 9 2017, 21:26) Х...   Jan 9 2017, 20:28
|- - demiurg1978   Цитата(desh @ Jan 10 2017, 02:28) ... Ска...   Jan 9 2017, 20:33
|- - zltigo   Цитата(desh @ Jan 9 2017, 22:28) Плохая п...   Jan 9 2017, 20:57
- - aiwa   Цитата(demiurg1978 @ Jan 9 2017, 20:26) Х...   Jan 10 2017, 01:59
- - Dima_G   Цитата(demiurg1978 @ Jan 10 2017, 01:26) ...   Jan 10 2017, 03:18
- - Непомнящий Евгений   Цитата(demiurg1978 @ Jan 9 2017, 21:26) Х...   Jan 10 2017, 06:30
|- - demiurg1978   Цитата(Непомнящий Евгений @ Jan 10 2017, 12...   Jan 10 2017, 07:11
|- - Сергей Борщ   QUOTE (demiurg1978 @ Jan 10 2017, 09:11) ...   Jan 10 2017, 07:33
||- - k155la3   Цитата(Сергей Борщ @ Jan 10 2017, 10:33) ...   Jan 11 2017, 09:50
||- - zltigo   Цитата(k155la3 @ Jan 11 2017, 11:50) Позв...   Jan 11 2017, 11:31
|- - Непомнящий Евгений   Цитата(demiurg1978 @ Jan 10 2017, 10:11) ...   Jan 10 2017, 08:17
|- - demiurg1978   Цитата(Непомнящий Евгений @ Jan 10 2017, 14...   Jan 10 2017, 11:24
|- - Непомнящий Евгений   Цитата(demiurg1978 @ Jan 10 2017, 14:24) ...   Jan 11 2017, 06:05
||- - demiurg1978   Цитата(Непомнящий Евгений @ Jan 11 2017, 12...   Jan 11 2017, 08:25
|- - Сергей Борщ   QUOTE (demiurg1978 @ Jan 10 2017, 13:24) ...   Jan 11 2017, 12:52
|- - Непомнящий Евгений   Цитата(Сергей Борщ @ Jan 11 2017, 15:52) ...   Jan 11 2017, 13:25
||- - Сергей Борщ   QUOTE (Непомнящий Евгений @ Jan 11 2017, 15...   Jan 12 2017, 10:05
|- - Dog Pawlowa   Цитата(Сергей Борщ @ Jan 11 2017, 15:52) ...   Jan 14 2017, 16:29
- - scifi   Цитата(aiwa @ Jan 10 2017, 04:59) Само кл...   Jan 11 2017, 08:31
|- - demiurg1978   Хм... Всем спасибо. Некоторым - в который уже раз....   Jan 11 2017, 08:56
|- - Непомнящий Евгений   Цитата(aiwa @ Jan 12 2017, 15:39) Ну бард...   Jan 16 2017, 05:14
- - Укушенный воблой   Цитата(demiurg1978 @ Jan 9 2017, 19:26) Х...   Jan 14 2017, 18:03
- - aiwa   Цитата(Сергей Борщ @ Jan 14 2017, 12:53) ...   Jan 16 2017, 08:26
|- - Непомнящий Евгений   Цитата(aiwa @ Jan 16 2017, 11:26) 7-кратн...   Jan 16 2017, 10:14
- - aiwa   Цитата(Непомнящий Евгений @ Jan 16 2017, 12...   Jan 17 2017, 02:54


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 8th August 2025 - 21:45
Рейтинг@Mail.ru


Страница сгенерированна за 0.01399 секунд с 7
ELECTRONIX ©2004-2016