Модераторы: LSD

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> использовать ли глобальные переменные? целесообразность использования гл. п. 
V
    Опции темы
GoldFinch
Дата 14.4.2009, 20:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: нет
Всего: 26



cin, cout, cerr  - глобальные переменные?
PM MAIL ICQ   Вверх
mes
Дата 14.4.2009, 20:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 1
Всего: 250



Цитата(Anikmar @  14.4.2009,  15:47 Найти цитируемый пост)

Я с начала спора говорил - все от конкретики зависит и полностью отказываться от глобальных переменных себе же дороже.

тут та же история что и с дефайном. Когда говорят , что он зло, имеется ввиду не сама директива #define, а ее применение не по назначению (для реализации функций или определения констант)
так и тут, никто(я надеюсь ;)) не говорит, что сама по себе глобальная переменная -зло, (просто есть некоторые нюансы использования), а способ программирования, при котором то, что можно было сделать локальным выставляется на всеобщее обозрение.

Код

void f(char *, int size) { .. }

int arry_size; // <-
void (char *) { .. }

тоже но с меньшим уроном проявляется и в циклах
Код

int i=0; for (;i<..;) .. 

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

часто говорят, зачем напрягаться, бросил переменную где попало и все ок. К сожалению это только видимое облегчение.. 
 Вместо того  чтоб один раз не поленится и убрать лишние зависимости, Вы обрекаете свои мозги постоянно контролировать зависимости, вместо плодотворной работы над следующим этапом. 

Все вышесказанное имхо, проверенное на горьком опыте smile





Это сообщение отредактировал(а) mes - 14.4.2009, 20:16


--------------------
PM MAIL WWW   Вверх
Lazin
Дата 14.4.2009, 20:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 4
Всего: 154



Цитата(GoldFinch @  14.4.2009,  20:14 Найти цитируемый пост)
cin, cout, cerr  - глобальные переменные? 

да, но тебя как правило не заботит то, что туда записывали раньше, так-что не в счет smile 
PM MAIL Skype GTalk   Вверх
vinter
Дата 14.4.2009, 20:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


Профиль
Группа: Завсегдатай
Сообщений: 2735
Регистрация: 1.4.2006
Где: Н.Новгород

Репутация: 1
Всего: 56



Цитата(zim22 @  14.4.2009,  20:54 Найти цитируемый пост)
нет. извольте, но я настою на своём.

Передо мной лежит книга, где среди авторов есть Meng Lee и Alexander Stepanov и вот там перечислено около 100 ф-ий. Эти ребята в STL по авторитетней будут ;)
Страуструп не прав полностью, в algorithm 66 ф-ий(если я не обсчитался). Но в STL есть не только algorithm


--------------------
Мой блог
PM MAIL WWW   Вверх
GoldFinch
Дата 14.4.2009, 23:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: нет
Всего: 26



Цитата(Lazin @  14.4.2009,  21:24 Найти цитируемый пост)
но тебя как правило не заботит то, что туда записывали раньше, так-что не в счет

значит всетаки есть глобальные переменные которые не в счет?)
PM MAIL ICQ   Вверх
mes
Дата 14.4.2009, 23:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 1
Всего: 250



Цитата(GoldFinch @  14.4.2009,  22:00 Найти цитируемый пост)
значит всетаки есть глобальные переменные которые не в счет?) 

повторюсь : не сама глобальная переменная - зло, а 
Цитата(mes @  14.4.2009,  19:15 Найти цитируемый пост)
 ее применение не по назначению

или не к месту.

и типа правило: если можно не делать переменную глобальной, лучше не делать.
 smile 


Это сообщение отредактировал(а) mes - 14.4.2009, 23:10


--------------------
PM MAIL WWW   Вверх
Lazin
Дата 14.4.2009, 23:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 4
Всего: 154



Цитата(GoldFinch @  14.4.2009,  23:00 Найти цитируемый пост)
значит всетаки есть глобальные переменные которые не в счет?) 

это другой случай
нам не важно, что раньше было записано в лог-файл или вывдено в терминал(если мы не пытаемся эмулировать GUI в терминале) поэтому, такие вещи как стандартные потоки ввода-вывода не создают проблемм(хотя они все-же имеют состояние и это иногда создает проблемы)
PM MAIL Skype GTalk   Вверх
J0ker
Дата 14.4.2009, 23:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 986
Регистрация: 17.9.2008

Репутация: нет
Всего: 14



Цитата(GoldFinch @  14.4.2009,  23:00 Найти цитируемый пост)
значит всетаки есть глобальные переменные которые не в счет?) 

а кто вам сказал, что это переменные? вы им попробуйте что-нить присвоить хыхыхы  smile 


--------------------
user posted image
PM MAIL   Вверх
Dmi3ev
Дата 14.4.2009, 23:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1698
Регистрация: 28.11.2007

Репутация: нет
Всего: 41



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


--------------------

PM MAIL   Вверх
Любитель
Дата 15.4.2009, 00:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 5
Всего: 92



Цитата(Lazin @  14.4.2009,  23:11 Найти цитируемый пост)
такие вещи как стандартные потоки ввода-вывода не создают проблемм(хотя они все-же имеют состояние и это иногда создает проблемы)

Вот именно. Изменитт кто-нибудь форматирование в потоке, а ты потом думай... ИМХО это одна из ошибок дизайна стандартной библиотеки С++.


--------------------
PM MAIL ICQ Skype   Вверх
azesmcar
Дата 15.4.2009, 08:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 2
Всего: 211



Цитата

а кто вам сказал, что это переменные? вы им попробуйте что-нить присвоить хыхыхы  smile  

Это переменные
Цитата

namespace std {
   extern istream cin;
   extern ostream cout;
   extern ostream cerr;
   extern ostream clog;
   ...
}

из стандарта С++. И то что им нельзя ничего присвоить еще не значит что они константны  smile
оператор присваивания это только один из способов изменить обьект. 
Цитата

Вот именно. Изменитт кто-нибудь форматирование в потоке, а ты потом думай... ИМХО это одна из ошибок дизайна стандартной библиотеки С++.

smile согласен

PM   Вверх
Anikmar
Дата 15.4.2009, 08:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 1
Всего: 59



Вот так рождаются баяны. И все из-за того, что кто-то взял на себя ответственность высказать абсалютное мнение. 

Глобальные переменные - ЗЛО
Дефайн - ЗЛО
goto - ЗЛО

Все в этом мире может быть ядом, а может быть лекарством. Все зависит от дозы.

Ничего злого в глобальных переменных нет. Зло только в способе их применения.
PM MAIL ICQ   Вверх
azesmcar
Дата 15.4.2009, 08:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 2
Всего: 211



Anikmar

да, тему надо перенести в религиозные войны smile 
PM   Вверх
Anikmar
Дата 15.4.2009, 08:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 1
Всего: 59



Цитата(azesmcar @  15.4.2009,  08:49 Найти цитируемый пост)
Anikmar

да, тему надо перенести в религиозные войны   


На 100% согласен  smile 
PM MAIL ICQ   Вверх
Lazin
Дата 15.4.2009, 08:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 4
Всего: 154



Цитата(Anikmar @  15.4.2009,  08:46 Найти цитируемый пост)
Ничего злого в глобальных переменных нет. Зло только в способе их применения. 

ну я даже не знаю что еще можно сказать
Чем меньше у тебя разные части приложения зависят друг от друга, тем лучше, глобальные переменные этому не способствуют. Так понятнее?
PM MAIL Skype GTalk   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила ведения Религиозных войн
Smartov
1. Уважайте собеседника
2. Собеседник != враг
3. Старайтесь воздерживаться от тем вида "Windows Rulez" или "Linux Rulez"

С уважением, Smartov.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Религиозные войны | Следующая тема »


 




[ Время генерации скрипта: 0.0845 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.