
Espressioni Regolari: la "magia oscura" del parsing.
Magari fosse così… in realtà è solo una schifezza piena di bug.
Ok, sto esagerando un po’, ma lascia che ti spieghi come sono arrivato a questa conclusione.
L'inizio
Come già sai, sono il creatore di StyleZero.
StyleZero ha quindi un parser.
Questo parser era stato costruito sin dall'inizio con un matching personalizzato, senza trucchetti tipo espressioni regolari.
A un certo punto ho letto il consiglio di uno sviluppatore su Facebook che diceva che le regex gli avevano salvato ore di lavoro.
Questo dev è molto esperto, e ho pensato:
Ma sì… ci provo anch’io!
L'implementazione
Ovviamente scrivere di botto tutto quel macello di regex per StyleZero non funzionava, quindi l’ho diviso in variabili.
Il risultato finale era un pasticcio incomprensibile, ma funzionava!
Per farla breve, sono riuscito a fare in una sola funzione un lavoro che prima era distribuito in diversi file.
Sembrava fantastico!
Tutto funzionava alla perfezione, finché… non funzionava più.
Ahah
Cosa è successo allora
Un collega appassionato di StyleZero si lamentava che mettendo certi SVG nel template, StyleZero semplicemente non compilava.
Nulla di estremo, aveva comunque trovato un workaround.
Ma oltre al fatto che ho riprodotto lo stesso problema in altri casi, volevo capire cosa causava l’errore.
Dopo vari test e rimozioni di pezzi dal template, alla fine ho scoperto che StyleZero va in crash con una stringa alfanumerica da 13 a 16 caratteri.
All’inizio mi sembrava ridicolo: da un lato riusciva a fare il parsing di template giganteschi senza problemi, e dall’altro bastava un file semplice con un testo del genere per farlo crashare:
234n905ct395945
Comunque, dopo un po’ di ricerca ho scoperto che la colpa era delle espressioni regolari.
Sono stato costretto a lavorarci sopra intensamente per 3-4 giorni e riscrivere il parser da zero, così è uscita la versione 9.2.1.
In generale però, posso dire che è stato un bene, perché il nuovo parser è molto migliore del vecchio sia come struttura sia come funzionamento.
Il mio consiglio quindi è:
Ok, usa pure le espressioni regolari… ma con cautela.
In generale sono considerate un po’ raffazzonate, quindi usale solo per cose semplici.
Scritto da: Umano
Tradotto da: AI