А чем плохо их использовать? Иногда это упрощает написание кода и лишний раз объявлять ничего не надо.
Коллизии в пространстве имён могут ничем хорошим не кончиться, помимо вещи "бля, почему всё рухнуло?"
Использовать в большом коде глобалы опасно, ок. Но люди всегда пишут только гигантские комбайн-проекты.
Нет, но иногда бывают неуместные глобалы, которые используются в одном методе.
Когда мне лениво, то в своих питоновских скриптах для ускорения процесса прописания функций прописываю глобалы, так как иначе пришлось бы вводить отдельную переменную. Когда пишешь другим и за деньги, наверное такая практика не приветствуется, особенно если есть аудит кода.
Если есть возможность избежать - надо избегать. Это ведет к разным запутанностям, хер поймешь что где, трудно отслеживаемым побочным эффектам и прочей хуете. Даже если у тебя один файл и не может быть коллизий. Если есть возможность, желательно использовать чистые ф-ии.
Я видел недавно что-то типо:
get_mac_address(some_shit);
WTF? И где get? А оно, блять, в глобальную переменную пишет. Какого, спрашивается, хуя? Почему нельзя было передать указатель?
Я видел недавно что-то типо:
get_mac_address(some_shit);
WTF? И где get? А оно, блять, в глобальную переменную пишет. Какого, спрашивается, хуя? Почему нельзя было передать указатель?
Коллизии - это фигня. Больше сложностей в том, что тяжело проконтролировать, где и когда изменяется переменная, как результат - куча багов.
Тем, что придумали указатели.
В целом, функции, использующие глобальные переменные, не поддаются тестированию, т.к. они работают по разному в зависимости от текущего состояния "системы".
Именно!!!
Чтобы написать коммент, необходимо залогиниться