LINUX.ORG.RU

Тупейший вопрос. Глобальные переменные — это хорошо, только не надо перегибать палку.

anonymous
()
Ответ на: комментарий от anonymous

А конкретней можно?

Ни в одном языке программирования не встречал понятие «перегибать палку».

Northsoft ★★
() автор топика

В embedded'е без них никак. А еще в многопоточных — мьютексы всякие должны быть глобальными. В остальном — на любителя.

Eddy_Em ☆☆☆☆☆
()

ооп зло, глобальное состояние рулит

bismi
()
Ответ на: А конкретней можно? от Northsoft

А с goto тоже непонятно как не перегибать палку? Updated: просто делай их только из необходимости, если иначе никак. В яве, вон, вообще нельзя их делать в буквальном смысле. И ничего, ынтырпрайззз жив.

coderage
()
Последнее исправление: coderage (всего исправлений: 1)
Ответ на: комментарий от coderage

А с goto тоже непонятно как не перегибать палку?

Есть простой рецепт: goto ради goto ненужно.

newKingOfTheBlock
()
Ответ на: комментарий от Eddy_Em

Неглобальные мьютексы, конечно же. Каждому потоку раздать объект-контекст, из которого он бы смог достучаться до мьютекса. Опа! Глобальное состояние убрали, какую-никакую модульность приобрели.

yoghurt ★★★★★
()

Не существует никаких глобальных переменных, это понятие появилось из-за неверного взгляда на программирование. Есть адреса объектов, которые могут знать или не знать другие объекты. Если существует адресное пространство, которое доступно всем объектам то оно и будет «глобальным», но его глобальность появляется не сама по себе, а лишь вследствии того, что все объекты знают все адреса в этом пространстве. В остаьном оно не отличается от любого другого.

newKingOfTheBlock
()
Ответ на: комментарий от yoghurt

Каждому потоку раздать объект-контекст, из которого он бы смог достучаться до мьютекса. Опа!

Больше шансов запутаться.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от newKingOfTheBlock

но его глобальность появляется не сама по себе, а лишь вследствии того, что все объекты знают все адреса в этом пространстве

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

no-such-file ★★★★★
()
Ответ на: комментарий от no-such-file

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

Это зависит от семантики. Ты, кстати собираешься отдавать? Куда тебе видос прислать, и как ты намерен расплачиваться, вот что меня в первую очередь интересует. А то ты тихонечко притух, как будто ничего не было. не по мужски это.

newKingOfTheBlock
()
Ответ на: комментарий от newKingOfTheBlock

Ой, это ты штоле, прости не узнал тебя в новом платье. А может не ты? Не знаю, зайди под старым логином, а то вдруг ты мошенник какой, ась?

no-such-file ★★★★★
()
Ответ на: комментарий от no-such-file

Под каким старым, у меня их с тех пор сменилось 10 штук, меня банят. Ты ближе к делу давай.

newKingOfTheBlock
()
Ответ на: комментарий от no-such-file

Ну че, живи *таким каков ты есть*, рано или поздно все все равно становится на свои места. Думаешь я тебя упрашивать буду? Такие как ты плевка не стоят, не то что разговора.

newKingOfTheBlock
()
Ответ на: комментарий от no-such-file

На всякий случай, а *вдруг* ты честный, но патологически недоверчивый.

Если вдруг, причина действительно в том, что ты сомневаешься что это я, справься у модраторов какой ящик закреплен за моим профилем www.linux.org.ru/people/nuboquest/profile и отправь на этот адрес код, а я тебе его перешлю, так ты можешь убедится, что это действительно я. А ящик там ЕМНИП nuboquest@yandex.ru

newKingOfTheBlock
()
Ответ на: комментарий от iu0v1

Вот по этому и существует поговорка «правила для идотов». Если не знаешь как - используй правило. Например если у ТС встал этот вопрос, то ответ должен быть простым - это очень плохо, не используй никогда. Когда придет понимание, правило уже будет не нужно. Можно использовать исходя из задачи. Это касается не только глобальных переменных, но и всех антипатернов.

Suntechnic ★★★★★
()

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

peregrine ★★★★★
()
extern int errno;
extern char **environ;
...
> gdb helloword
break main
r
info variables

как-то вот так с «историями успеха».

глобальные переменные весьма успешно существуют и они хороши хотя-бы тем, что приносят попоболь задротам

MKuznetsov ★★★★★
()

Хорошо или плохо

Субъективное понятие. Хочешь используй, хочешь нет. Не слушая всяких Ъ-погромистов типа: «кококо глобальные переменные! кококо гото! Кудах!» Если пишешь на ассемблере и цэ, то можешь хоть обмазываться ими.

Unicode4all ★★★★★
()

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

При этом любой инструмент имеет свои ограничения (им можно решить не любую задачу). Кроме того любой инструмент можно использовать неправильно.

Так вот «глобальные переменные» - это инструмент для решения задач. И вопрос имеет смысл ставить так:

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

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

anonymous
()
Ответ на: комментарий от Unicode4all

С какого перепугу?

#include <iostream>

void func1(), func2();

int count; //Вот она - глобальная переменная

int main()
{
	count=100;
	func1();
	return 0;
}

void func1()
{
	std::cout<<"счетчик до модификации"<<count<<std::endl;
	func2();
	std::cout <<"счетчик после модификации"<<count<<std::endl;
}

void func2()
{
	count=100500;
}

peregrine ★★★★★
()
Ответ на: комментарий от yoghurt

Я привык к «ембедщине», а там глобальных флагов — вагон и маленькая тележка! Скажем, состояние КА очень редко удается сделать неглобальной переменной (и то, она все равно фактически будет глобальной — static — только внешние функции ее адреса знать не будут).

Eddy_Em ☆☆☆☆☆
()

man getopt_long, man errno, скорее хорошо. Плохо, когда можно локально, но все равно глобально.

IvanR ★★★
()
Ответ на: комментарий от anonymous

Наверное твоя проблема в том, что ты нулёвый балабол.

Перед тем как кукарекать - тебе надо определиться, что есть такое «глобальность».

Есть задачи и есть инструменты их решения

Ну прям фиеричная кряква.

Так вот «глобальные переменные» - это инструмент для решения задач.

Датычё.

решает ли этот инструмент твои задачи

И какие же «задачи» он может не решать?

какие у него особенности, которые могут привести к ошибкам и другим сложностям,

К ошибка может привести только тотальная профнепригодность, т.е. когда в профессии появляются патологические дворники.

нет ли решения получше.

Ахриненная история.

синглетонам

А, т.е. руки в жопе уже не руки, а голова в шапке - это новый инструмент.

Вся суть нулёвой балаболки, которая не отличает интерфейса от реализации.

Хотя да - ведь именно если надеть чехол на руль - это будет совершенно иная машина. Логика нулей просто божественна.

anonymous
()
Ответ на: комментарий от vrtlm

Т.е. обмазывание синглтонами в любой деревенской ооп-тусовке это норма и типа это не «глобальная переменная»? Ну да, куллстори.

Каким образом глобальность скрывает зависимости? Глобальность будет в любом виде, если это рашед-объект в какую бы обёртку ты его не запихнул и как бы ты его не назвал. При этом тупая переменная будет намного более наглядна.

да и тестировать такой код будет издевательством.

Пиши тег - «проблемы профнепригодных обезьян», чтобы никто не путал реальные проблемы и проблемы какого-то стада.

anonymous
()
Ответ на: комментарий от newKingOfTheBlock

Опять же перед тем как кукарекать и срывать покровы - надо уметь думать.

Глобальность - это 2понятия, которые нули как-то смешивают. Область видимость и область жизни - на уровне днищеяп - это где-то рядом, поэтому в целом ясно откуда они это берут.

Естественно область видимости - это абстракция компилтайма в типичном днищеязычке, но есть ещё и время жизни. И именно существование этого «времени жизни» рушит всю твою ахриненную теорию.

anonymous
()
Ответ на: комментарий от anonymous

обмазывание синглтонами в любой деревенской ооп-тусовке это норма

Шта?

Каким образом глобальность скрывает зависимости? Глобальность будет в любом виде, если это рашед-объект в какую бы обёртку ты его не запихнул и как бы ты его не назвал.

рашед-объекты внезапно можно передавать аргументами.

При этом тупая переменная будет намного более наглядна. Пиши тег - «проблемы профнепригодных обезьян», чтобы никто не путал реальные проблемы и проблемы какого-то стада.

google://2013+toyota+global+variables

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.