Перейти к содержимому

Реферальная программа Мегаплана

Партнерская программа Kredov

Локальные переменные

#1 RussiaStudent

RussiaStudent
  • Пользователь
  • 19 сообщений
  • Репутация: 0
0

Отправлено 09 Февраль 2009 - 22:26

Сегодня мы в университете изучали функции и затронули тему глобальных и локальных переменных.
Преподаватель нам сказал, что глобальные переменные видны во всей программе, а локальные существуют только в пределах той функции в которой мы её объявили. Вот к примеру я написал длва примера на PHP с использование глобальных и локальных переменных.
С глобальными переменными
<?php
$a = 1;
$b = 2;

function Sum() //объявляем тело функции
{
	global $a, $b;

	$b = $a + $b;
} 

Sum(); //вызываем функцию
echo $b; //выведется 3
?>
С локальными переменными
<?php
$a = 1;
$b = 2;

function Sum($c, $d) //объявляем тело функции
{
	$d = $c + $d;
	return $d;
} 

$b = Sum(); //вызываем функцию и присваиваем значение переменной $b
echo $b; //выведется 3
?>
Но кто может мне сказать, почему преподаватель сказал нам, что использовать глобальные переменные это плохойц тон в программировании? Ведь работать-то с такими переменными намного проще. Я никак не могу понять, зачем ограничивать доступ к переменной, если можно просто задавать всё глобально и не мучаться с передаваемыми значениями.

 

 

  • 0

robot

robot
  • Пользователь PRO
  • 2 652 сообщений
  • Репутация: 85
Советую обратить внимание на следующее:
  1. Как получить переменные через адресную строку?
  2. Передача переменной через функцию include
  3. Переменная в функции доступна в основной программе
  4. Как проверить переменные на тип
  5. Извлечь содержимое файла в переменную

#2 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 10 Февраль 2009 - 09:57

RussiaStudent, тогда представим такую картину. Тебе дают разобраться в программе состоящей из 1000 файлов. Если половина переменных у тебя будет глобальными в том коде. Ты никогда не разберешься, что откуда пришло и где изменилось.
Что же касается Локальных переменных, преимущества:
1) Хорошая структуризация кода (значение переменной передаётся в функцию, значение возвращается их функции, локальная переменная существует только в той функции, в которой она объявлена);
2) Легко читается программа (где используется та или иная переменная, всё по закономерности, переменная либо передаётся в функцию, либо объявляется(определяется) в теле функции);
3) Меньшая возможность допускания ошибки в программе.
Вот ты случайно изменил где-то глобальную переменную, а где из большого количества файлов, ты найти не можешь.
А при модульном подходе, изменение можно произвести только в предназначенных для этого функциях, глобальных переменных вообще быть не должно.

Вот основные аспекты, почему я за модульное программирование без глобальных переменных.
Максимум когда я объявляю или определяю глобальные переменные, это либо параметры конфигурации скрипта, либо используемые в цикле счётчики и подобное.
  • 0


Оформление форума – IPBSkins.ru