Werken in jouw regio?

Modules in Javascript

Elk programma heeft een structuur. Deze structuur wordt grotendeels bepaald door de manier waarop het programma is opgedeeld in functies, klassen en lagen. De vrijheid die programmeurs krijgen bij het opzetten van een applicatie is groot, zodat ze de opzet kunnen kiezen die het beste past. Vaak is de vorm van een applicatie dan ook voor een groot deel afhankelijk van de smaak van de ontwikkelaar.

Ordina bedrijfsrestaurant

Zodra applicaties een bepaalde grootte bereiken, vallen kleine functies snel weg tegen een woud van code. In no time ontstaat er een wildgroei aan kleine, ongeorganiseerde methodes. Om hier structuur in aan te brengen hebben we een betere manier van organiseren nodig.

Modules zijn een manier om programma’s onder te verdelen in clusters van code die bij elkaar horen volgens een bepaalde maatstaf. Net als een schrijver die zijn boek onderverdeelt in hoofdstukken, maakt een programmeur zijn code een stuk leesbaarder als er een logische groepering wordt gehanteerd. Dit maakt het voor iedereen die later komt een stuk makkelijker om direct bij het stuk code te komen waar aan gewerkt moet worden.

Het is te vergelijken met het opdelen van je project in meerdere bestanden. Structuur helpt mensen de code zich eigen te maken. Het zorgt ervoor dat dingen die logischerwijs bij elkaar horen makkelijker worden gegroepeerd en verbeterd bovendien de herbruikbaarheid van de code.

Natuurlijk kost het extra werk om dit te implementeren. Voor niets gaat de zon op. Aan het begin van een project, als nog niet duidelijk is wat de vorm van een applicatie zal worden, is het veiliger om dingen zo klein mogelijk te houden. Geen overbodige generieke methodes die later eventueel wel van pas zouden kunnen komen; alleen het broodnodige. Schrijf een methode zo dicht mogelijk bij de plek waar je hem gebruikt. Denk na over het doel van de methode, en de verantwoordelijkheid die deze draagt.

In het begin is het vaak beter om een minimalistische, ongestructureerde manier van werken aan te houden. Ga pas organiseren als je applicatie een redelijk stabiele code-base heeft en je een duidelijk beeld hebt van de uiteindelijke vorm van de applicatie. Dit voorkomt nodeloos heen-en-weer geschuif met stukken code, waar veel tijd in kan worden verspild. Een ander gevaar wat je zo voorkomt is het 'jezelf klem zetten' in een structuur die uiteindelijk toch niet bij de applicatie past, met alle gevolgen van dien. In het ergste geval kun je soms beter je code weggooien en ‘from scratch’ opnieuw beginnen.

Samenvattend is het gebruik van modules dus onmisbaar bij grotere applicaties, maar is het af te raden om een applicatie prematuur onder te verdelen in vaste modules. Natuurlijk hangt dit erg af van je werkwijze, Test Driven Development of Document Driven Development vergen immers een mate van bezinning voordat er begonnen wordt met het kloppen van code. Ik ben dan ook erg nieuwsgierig naar jullie visie op dit onderwerp. In mijn volgende post zal ik uitweiden over de scope, de herbruikbaarheid en ‘Inversion of Control’, en hoe modules hier aan bijdragen.