Glädjen av separation

Jag har ägnat de senaste veckorna åt att bygga om en åldrande Flash-applikation, en flervalstestmotor för www.passyourtheory.co.uk som härrörde från ett befintligt arbete som jag hade gjort 2004. Denna applikation fungerade tillräckligt bra, men på grund av det organiska sättet den växte upp har den blivit för ineffektiv för en modern webbplats. Denna fråga ställs till sin spets när Driving Standards Agency, från vilken vi licensierar den officiella frågebanken för teoriprov, ändrar frågorna varje september.

Glädjen av separation

Vi får möjlighet att köpa en disk som innehåller de nya frågorna, men eftersom de fortfarande är anpassade för bokutskrift är det enda formatet vi erbjuds en Filemaker-databas som exporteras från Quark. Detta innehåller varje fråga som en enda post, medan vår applikation använder en snyggt utformad relationsdatabas, och det finns inget sätt att exportera direkt från Filemaker så att den kan importeras till vår struktur. Vi måste därför manuellt lägga till, ta bort och redigera de frågor som har ändrats sedan förra gången – och för att göra saken värre designade en tidigare anställd vår motorcykeldatabas separat från bildatabasen, trots att de delar 75% av frågorna. Jag tycker att det är fruktansvärt frustrerande att behöva göra något två gånger och att plöja igenom 1 300 frågor två gånger när en gång kunde ha gjort det gör mig extremt olycklig, så jag bestämde mig för att uppgradera både databas och testmotor innan frågan ändrades i september 2008.

Först kombinerade jag bil- och motorcykeldatabaserna och lade till ett enda fält som anger om denna fråga eller svaret avser bilar, motorcyklar eller båda. PHP-koden var tvungen att skrivas om för att klara denna förändring, men det tog bara några timmar. Jag visste dock att Flash-arbetet skulle bli mycket mer omfattande. Applikationen använder tidslinjen för att ladda data och kontrollera att laddningen är klar innan man går vidare, vilket gör det svårt att lägga till nya funktioner eller återanvända koden någon annanstans, och bara av den anledningen tänkte jag börja om från början. Att välja ActionScript 3 som kodspråk löste saken eftersom, ta det från mig, att försöka uppgradera en sofistikerad applikation skriven i ActionScript 2 till 3 är meningslöst – de är helt enkelt för olika och det är bättre att börja om igen. Jag var fast besluten att den nya versionen skulle vara lättare på bandbredd, lättare att utöka, helt oberoende av tidslinjen och, framför allt, återanvändbar: och jag ville att motorn skulle vara konfigurerbar utan att behöva redigera Flash. ActionScript 3 har alla nödvändiga funktioner, men enligt min erfarenhet är det mycket mindre produktivt och trevligt att använda än mitt favoritkodningsspråk PHP.

PHP är, har jag fått veta, en rekursiv akronym som står för ”PHP Hypertext Preprocessor”, men för mig står P för ”Pragmatic” eller ”Practical” eftersom PHP är det enskilt mest produktiva språket jag vet. Detta beror inte bara på förtrogenhet, eftersom jag under åren har tillbringat mycket fler timmar med att skriva ActionScript än PHP – PHP känns bara som om det var utvecklat av människor som har arbetat i den verkliga världen, perfekt trampar gränsen mellan teorier och öva. ActionScript 3 däremot är det mest frustrerande språket jag någonsin arbetat i, men för att vara rättvis har jag aldrig använt C++, C# eller Java, vilket jag misstänker att det liknar – jag har tillbringat många år med ActionScript 2 tillsammans med JavaScript, PHP, RealBasic och Director’s Lingo manusspråk.

Ingenting i AS3 är enkelt: det finns ingen av de ”gratis luncher” som andra programmeringsspråk erbjuder. Att lägga till en enkel Loader-komponent för att ge en visuell indikation på nedladdningsförloppet involverar dussintals rader kod, porlande över referensmanualen och timmar av frustrerande försök och fel. Ju mer jag försöker använda Flash CS3 så som det tydligt är tänkt att användas, desto mer frustrerad blir jag. Det gör allt jag vill göra svårare.

Lämna en kommentar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *