Обсуждение глобальных переменных и их неправильное использование, по-видимому, имеет определенный догматический тон. Я здесь не для того, чтобы оспаривать концепцию «глобалы плохие», поскольку для меня имеет смысл, почему они плохи. Однако мне было интересно, есть ли у людей интересные фрагменты кода, которые демонстрируют, как эффективно реорганизовать более высокие области и объекты из кода. В этом вопросе я ищу примеры или шаблоны общих, но полезных решений для «Мне нужно использовать глобальную переменную здесь, потому что это легко».Как реорганизовать глобальные переменные из вашего кода
Вот гипотетический и, возможно, надуманный пример. Я использую глобальную переменную, чтобы отслеживать параметры, присланные функции. И тогда, если произойдет сбой, который произойдет дальше по цепочке, я могу вернуться и снова вызвать функцию, используя параметры глобальной переменной.
public var myGlobalState:Object = new Object();
public function addPerson (name:String, person:Object, personCount:int, retryCount:int):void
{
myGlobalState = null; // Clear out old values
myGlobalState = new Object();
myGlobalState.name = name;
myGlobalState.person = person;
myGlobalState.personCount = personCount;
myGlobalState.retryCount = retryCount;
person.userId = personCount + 1;
person.name = name;
savePerson(person);
}
public function savePerson (person:Object):void
{
// Some code that attempts to save the person object properties to a database...
// The process returns a status code for SUCCESS of FAILURE.
// CODE TO SAVE TO DATABASE ....
// Return status code...
if (status == "fail")
{
// Retry at least once by calling the addPerson function again
if (myGlobalState.retryCount < 3)
{
addPerson (myGlobalState.name, person, myGlobalState.personCount, myGlobalState.retryCount);
}
}
}
Это один из способов сделать это –