Een hulpmiddel dat in uw webcoderingsarsenaal hoort, is het toestandsdiagram. Een toestandsdiagram toont de verschillende "toestanden" (reacties) die uw toepassing (bijv. Website) kan bevatten, evenals welke actie of invoer (van de gebruiker) nodig is om een specifieke toestand te bereiken. Een toestandsdiagram helpt om alle mogelijke interacties tussen gebruikers en applicaties in je hoofd te zetten. Dit vergroot de kans dat je in ieder geval de codering voor alle mogelijkheden overweegt, simpelweg omdat je ze nu allemaal kent - wat de kans verkleint dat je een foutcode of nog erger hebt, vergeten bent om met specifieke functionaliteit om te gaan.
Een statusdiagram bestaat uit twee componenten: cirkels om staten te vertegenwoordigen (toepassingsreacties / uitvoer) en pijlen om overgangen weer te geven (gebruikersacties / invoer). Toestandsdiagrammen zijn erg handig voor complexe en niet zo complexe computertoepassingen van welke aard dan ook. Als het echter om de ontwikkeling van websites gaat, zijn statusdiagrammen niet altijd van nut:
Aan de andere kant, als u een website bouwt waar u speciale overgangen moet afhandelen, dan kan een toestandsdiagram van groot voordeel zijn:
Het verrassende is dat statusdiagrammen niet zo gecompliceerd zijn om te produceren. Maar in mijn ervaring, ze worden niet zo vaak gebruikt door de meeste programmeurs, ondanks de voordelen (dieper inzicht in gebruikersinteracties, samenhang van coderingsinspanningen). Ik zweer bij ze - of deed toen ik elke dag codeerde in verschillende banen.
Het wordt aanbevolen dat u eerst toestandsdiagrammen op papier maakt en deze vervolgens naar een digitale kopie overbrengt als en alleen als dat nodig is. (Er is iets aan de tactiliteit van het schetsen van input / display-relaties op papier, waardoor ze concreter worden in je geest, waardoor het gemakkelijker wordt om alle mogelijke interacties te accommoderen en zo bugs in je applicaties te verminderen.)
Een toestandsdiagram bestaat uit:
U ziet een eenvoudig voorbeeld direct hieronder - dat later in dit artikel wordt uitgebreid:
Hier zijn de stappen voor het maken van statusdiagrammen (met een neiging naar website-gebaseerde applicaties):
Als u wilt uitbreiden op nummer 7 hierboven, moet u er rekening mee houden dat er met websites veel herhalingen kunnen optreden. Als bijvoorbeeld elke pagina hetzelfde navigatiemenu bevat, is het niet nodig om die overgangen keer op keer weer te geven en het toestandsdiagram overzichtelijk te maken. Vertegenwoordig geclusterde acties met een korte notatie / symbool.
(Het is veel eenvoudiger om een toestandsdiagram te begrijpen als u degene bent die het tekent, stap voor stap.) Als u een persoon bent die naar een ingevuld toestandsdiagram kijkt, kan dit intimiderend zijn. Om deze reden leven statusdiagrammen vaak alleen op papier - ervan uitgaande dat je ze gebruikt.
Voor een statische website die gebruikt Nee AJAX-y-kenmerken (d.w.z. elke functie waarbij de URL niet verandert), een toestandsdiagram is tamelijk gemakkelijk te produceren, maar in het algemeen onnodig. Een statische website waarop elke pagina is verbonden met elke andere pagina resulteert bijvoorbeeld in een statusdiagram dat soms wordt aangeduid als een 'volledig verbonden' grafiek. Dergelijke toestandsdiagrammen zijn meestal zinloos omdat er geen speciale afhandeling is om te visualiseren. Elke staat is verbonden met elke andere staat)
Waar toestandsdiagrammen het meest handig zijn, is voor dynamische sites - vooral die met AJAX-y-functies (zoals vervolgkeuzemenu's, schuifregelaars, accordeons, galerijen, enz.). In het laatste geval kan de URL in de browser mogelijk niet veranderen, maar de pagina-inhoud doet dit gedeeltelijk. Het is moeilijker om alle mogelijke toestanden en overgangen (acties) te visualiseren omdat een "pagina" veelvoudige sub-toestanden kan hebben.
Een toestandsdiagram (of set van steeds gedetailleerdere diagrammen) is in dit geval erg handig - vooral als er een team van codeerders (en soms ontwerpers) is om mee te werken.
In een volgende tutorial ga ik je laten zien hoe je de jQuery codeert voor twee effecten die ik gebruik in mijn AboutMe-sjabloon. De live-pagina bevat enkele CSS-glitches die eerst moeten worden gladgestreken. Ik wil ook nog wat meer op jQuery gebaseerde functies toevoegen als er voldoende tijd is. Deze extra functies zullen het onderwerp van ons voorbeeld zijn.
In de toekomst zal dit sjabloon veranderen in een gratis WordPress-thema gericht op freelancers die hun werk (optredens) willen laten zien. Voor nu wil ik laten zien hoe toestandsdiagrammen je kunnen helpen de noodzakelijke oorzaak / reacties (alias invoer / overgangen) voor de hierboven getoonde "Current Gigs" galerij te begrijpen. Het begrijpen van de noodzakelijke overgangen helpt je om met meer vertrouwen te coderen, en het is allemaal taalonafhankelijk coderen. U kunt dus beslissen over codebibliotheek / taal na het maken van het toestandsdiagram.
Als je de galerij "Current Gigs" links in het midden van de afbeelding hierboven of op de live-pagina bekijkt, zie je dat dit in essentie hetzelfde concept is als een afbeeldingengalerij. Klik op een link en details van dat "optreden" zullen verschijnen. Toen ik echter de live-pagina bouwde, waren er geen jQuery-zelfstudies over hoe je tekst in de mix gooide, voor elk "frame" van de showcase. Ik moest met mijn eigen code komen.
Om dat te doen, moest ik eerst alle mogelijke gebruikersinteracties begrijpen. Een toestandsdiagram is hier ideaal voor. Laten we echter de ante op een rijtje zetten. Wat ik echt wilde, is een showcase-gedeelte dat zowel Current Gigs als Past Gigs laat zien. Het is een beetje zoals een visuele C.V. (Curriculum Vitae, ook bekend als "cv"), met een galerij met werkervaring. Het frame van elk optreden bevat een schermafbeelding van de startpagina van de bijbehorende site, samen met wat tekst met details over het werk dat ik deed / doe daar.
Voorlopig bevat de pagina alleen 'Current Gigs', maar ook 'Past Gigs'. Hier is een lijst met functionele vereisten voor wat het showcase-gebied zou moeten hebben:
Dus nogmaals, het doel is om een interface met tabbladen te hebben met de tabbladen "Current Gigs" en "Past Gigs". Dit staat later meer tabbladen toe, alleen beperkt door de breedte van elk label en de breedte van de showcase-ruimte (590 pixels). Maar ik wil dat de tabbladen "onzichtbaar" zijn, zoals vermeld. In plaats van de typische tabbladen in een tab-interface, wil ik minibanners gebruiken. Als je kijkt naar de live testpagina, is er een minibanner met het label "Current Gigs" en een andere met het label "Past Gigs". Dat zijn de tabbladen. Hier is een close-upscherm van hoe het uiteindelijke showcase-gebied eruit zou kunnen zien, met standaardinstellingen.
Om het toestandsdiagram te maken, moeten we eerst alle mogelijke unieke status, invoer en actie opsommen:
Opmerking: op dit punt maken we ons alleen zorgen over wat er gebeurt in de C.V. showcase. In het toestandsdiagram geven we niet om acties die andere delen van de webpagina beïnvloeden. We laten alleen acties / reacties zien die van invloed zijn op de C.V. vitrine.
Hier is een voorbeeldstatusdiagram voor de bovenstaande functionaliteit.
Een paar opmerkingen over dit diagram:
Uitgaand van punt 5 hierboven is de vuistregel dat als er meerdere repetitieve overgangen zijn vanuit een verwant cluster van toestanden, je de overgangen kunt annoteren met een soort korte vorm. U wilt gewoon een idee krijgen van de belangrijke overgangen, zodat ze vooroplopen in uw gedachten. Een andere benadering is om een complex diagram te nemen en op te delen in delen: hoofdoverzicht en vervolgens 'geëxplodeerde' versies van transitieclusters.
Het diagram hierboven zou bijvoorbeeld een hoofdtoestandsdiagram kunnen hebben met de knooppunten S, CG en PG. Dan zouden er twee gedetailleerde diagrammen zijn. Men zou S, CG en de corresponderende sub-toestanden hebben die verschillende optredens representeren. Het andere gedetailleerde diagram zou S, PG en de overeenkomstige gig-subtoestanden hebben.
Over het geheel genomen zou u nu een duidelijker beeld moeten hebben van hoe de showcase-sectie functioneert. Ik ga niet begrijpen hoe je van een toestandsdiagram naar echte code kunt gaan. Dat moet duidelijk worden zodra u alle interacties met de gebruiker begrijpt. Toestandsdiagrammen - en uw begrip hiervan moet u helpen om meer samenhangende code te schrijven, waardoor de kans op een buggy-applicatie afneemt. Uw coderingstechniek verandert niet.