Globale variable i swift

Hej
Jeg er ret vild med at programmere i swift, som jeg synes er et nemt sprog i forhold til så meget andet. I de apps jeg laver, opbevarer jeg data i globale arrays og dictionaries, som jeg definerer i en særskilt klasse med funktioner, der loader og saver de pågældende data. Dataene er defineret ovenover klassen.
I AppDelegates under applicationWillResignActive kalder jeg save funktionen og i applicationDidBecomeActive loader jeg data ind i tabellerne (hvis de er tomme).
Således har jeg indkapslet selve accessen til UserDefaults, CoreData, Firebase, whatever til meget enkel kodning, der nemt kan skiftes ud med noget andet. Jeg synes også kodning af app'ens funktionalitet bliver meget enklere.
Men jeg har lige et spørgsmål:
Når jeg googl'er rundt på nettet, synes jeg den overvejende holdning er, at man skal undgå globale variable. Hvorfor ? - når brugen er strengt formålsbestemt.
Håber eksperterne kan hjælpe med lidt teori og argumentation på dette felt. På forhånd tak.
/Karin

Hej Karin
Det er nemt at sige, at du skal undgå globale variabler. Den svære del er at lære de bedste alternativer til globale variabler iht. den situation og de data du arbejder med på det givne tidspunkt.
Jeg har intet imod globale variabler, så længe der er et specifikt behov for det, men der er alternativer, og det handler i bund og grund om sikkerhed og optimering.
Hvis du gerne vil meget mere i dybden med emnet, kan jeg anbefale bogen Design Patterns https://en.wikipedia.org/wiki/Design_Patterns
Denne side beskriver også lidt om hvorfor Globale variabler kan være en dårlig idé: http://wiki.c2.com/?GlobalVariablesAreBad
Med venlige hilsner Daniel Bahl (@db)
CEO – v5.dk ApS

Hej Daniel
Tak for svaret og links.
Teoretisk er globale variable måske ikke så kønt, men når swift nu er et sprog, hvor det nemt i praksis kan lade sig gøre, og Apple i øvrigt tillader det uden kommentarer, når man kører app'en eller lægger den i App Store, så regner jeg ikke med, at det går helt galt. Selvfølgelig skal man tænke nøje over, hvordan man bruger det, men det skal man i det hele taget, når man designer sin funktionalitet og strukturerer programmet.
Jeg tror nok, jeg vil afvente rigtig gode argumenter - noget med, at noget andet så ikke kan lade sig gøre - eller at jeg får problemer netop på grund af global temporær dataopbevaring - inden jeg ændrer på min måde at opbygge apps. Jeg synes det fungerer, og der er så meget andet uopdyrket, jeg gerne vil afprøve.
Mvh
Karin

Hej igen Karin
Jeg tror aldrig du vil opleve noget der ikke kan løses- eller ikke virker med global variables. Tvært imod.
Det er et design-princip; at skrive pæn design-rigtig kode vs. funktionel kode kan være to vidt forskellige ting- og i langt de fleste tilfælde fokuserer jeg primært også selv på at skrive funktionel kode som hurtigt kan skubbes ud af døren
God Swift'ing!
Med venlige hilsner Daniel Bahl (@db)
CEO – v5.dk ApS