26 ottobre 2008

PHP e i namespaces

A partire da PHP 5.3.0 è possibile finalmente utilizzare i namespaces per risolvere i problemi di scoping soprattutto nelle librerie di notevoli dimensioni. Tutto bene? Non proprio.
È stato deciso dopo ORE di conversazione (qui l'annuncio ufficiale) il carattere che rappresenterà il separatore, scelta ricaduta sul backslash ( \ ), che andrà a rimpiazzare i '::' che causavano dei problemi in quanto già utilizzati per i metodi statici di una classe. Dal RFC relativo possiamo vedere quali sono i criteri di questa scelta:

  1. Facilità di digitazione;
  2. Vulnerabilità ai typo;
  3. Semplicità di parsing;
  4. Compatibilità con gli IDE;
  5. Numero di caratteri.
Dati questi criteri, come è stato possibile scegliere il backslash? Analizzando, ci sono diverse critiche da fare.

Facilità di digitazione e Vulnerabilità ai typo: basare una scelta del genere sulla facilità di digitazione a mio parere è sbagliato, soprattutto perchè esistono molti layout di tastiera, per cui ciò che è semplice digitare su una tastiera qwerty può essere difficile per altri layout.
Compatibilità con gli IDE: Il carattere '\' rappresenta il carattere di escape, gli IDE dovranno quindi confrontarsi con namespace del tipo "nome\troppo\bello", dove \t genericamente rappresenta il carattere tab, o "mio\namespace", e così via. Come si comporteranno in questo caso?
Anche per quanto riguarda l'esperienza dei programmatori il carattere potrebbe rappresentare dei problemi di chiarezza, dato il suo significato "acquisito" come carattere di escape.
Aggiungo quali sono le alternative proposte, scartando quindi "::" per i motivi citati in precedenza e "." in quanto è già utilizzato per la concatenazione di stringhe: **, ^^, :>, :), %%, ::: .
Forse ":)" paradossalmente avrebbe fatto meno sorridere :)

Nessun commento: