woensdag, mei 24, 2006

Regex? doe mij maar een schroevenhamer!

Elke ochtend begint mijn werkdag met een rondje langs mijn favoriete blogs. Mijn favoriet van het moment is "old new thing" op korte afstand gevolgd door "the daily wtf". En wat bijkt gistereb hebben ze allebei een post over een verhaal waar voor mij heel verband in zit.



Raymond van old new thing, schrijft een heel verhaal over regexen, en ik ben het helemaal met hem eens. Regex is de ultieme write-once taal. Niet te debuggen, moeilijk te schrijven. Als een groot zwitsers zakmes wat amper te gebruiken is zonder in je eigen vingers te snijden. Hij geeft een voorbeeld over het valideren van een ip-adres. Het kan in 1 regex maar mooier wordt het er niet op. Terwijl als je een simpele regex en een paar regels code gebruikt je het valideren zo voor elkaar hebt.


Of zoals Raymond het samenvat: Don't make regular expressions do what they're not good at. If you want to match a simple pattern, then match a simple pattern. If you want to do math, then do math. As commenter Maurits put it, "The trick is not to spend time developing a combination hammer/screwdriver, but just use a hammer and a screwdriver.




Deze hele discussie is ook toepasbaar op een discussie die we hier intern voeren. Namelijk dat tables niet gebruikt mogen worden, maar dat men DIV's moet gebruiken in HTML pagina's. Waar dat toe kan leiden is te vinden op the daily wtf. Op zich is het niet willen gebruiken van tables een nobel streven. Maar sommige dingen zijn nu eenmaal makkelijker te doen met tables dan met div's. En dan moet je niet koste wat kost proberen vast te houden aan je regels.

Een goede programmeur weet wanneer hij coding guidelines kan breken. En dingen gewoon praktisch op moet lossen. En regex? "Some people, when confronted with a problem, think "I know, I'll use regular expressions." Now they have two problems." -- Jamie Zawinski.

1 opmerking:

Anoniem zei

Dat moet iemand me toch eens uitleggen. Waarom zijn tables achterhaald en waarom zou je ze niet gebruiken? Er is in mijn ogen geen enkele structuur beter dan een table als je een tabel wilt tonen op het scherm... Daarnaast kunnen IE en Firefox prima omgaan met tabellen en (als je ze goed uitlijnt) zijn ze nog leesbaar ook! In die discussie zou ik me nog wel eens willen mengen.. denk dat er toch een schroefje los zit bij diegene die alle cells als losje divjes gaan positioneren...