Valutazione di spazi dei nomi PHP


11

Sono nella fase di pre-release di un progetto PHP open source, che spero venga utilizzato da altri sviluppatori nei loro progetti. Il progetto attualmente non supporta gli spazi dei nomi e sto cercando di valutare se dovrebbe usare gli spazi dei nomi o la convenzione di denominazione PEAR di Dir_Subdir_Class, che sembra avere tutti gli stessi vantaggi tecnici senza alcuni svantaggi. Ad essere onesti, non è una scelta facile.

Alcuni punti da considerare nei confronti degli spazi dei nomi:

  • Uno dei modi in cui il mio progetto sta cercando di differenziarsi fornendo un'API più semplice rispetto ad altri progetti simili. Poiché gli spazi dei nomi sono nuovi e anche perché sono più complicati della convenzione di denominazione PEAR, introdurli nella base di codice renderà il mio progetto meno semplice da usare. Implementandoli, perdo una certa differenziazione in termini di facilità d'uso.
  • Mentre posso vedere alcuni vantaggi per gli spazi dei nomi, non sembrano risolvere un problema che deve essere risolto in un moderno prodotto PHP che utilizza la convenzione di denominazione PEAR. I conflitti di denominazione durante l'utilizzo del mio progetto dovrebbero essere minimi se non inesistenti.
  • Questo articolo mi dà una pausa nell'adottare gli spazi dei nomi poiché la loro implementazione è stata tutt'altro che stellare.
  • Sono anche riluttante a saltare su un carro che potrebbe non andare da nessuna parte. Poiché gli spazi dei nomi sono una nuova funzionalità di PHP, non sono ancora convinto che diventeranno standard.
  • Compatibilità. Quasi tutto il codice PHP che sia mai stato scritto non utilizza gli spazi dei nomi in quanto è una nuova funzionalità. Altre biblioteche sarebbero incompatibili senza una conversione.

Alcuni punti per l'utilizzo degli spazi dei nomi:

  • Percezione. Se gli spazi dei nomi diventano standard e una buona pratica, il mio progetto potrebbe rapidamente essere visto come non professionale e obsoleto senza di essi.
  • Concorrenza. Mentre alcuni progetti PHP concorrenti stanno iniziando a utilizzare gli spazi dei nomi nelle loro ultime versioni, molti devono ancora fare il salto. Farlo ora potrebbe dare al mio progetto un vantaggio su altri progetti.
  • Il lavoro futuro sarebbe più semplice se avessi fatto il passaggio ora prima che il progetto diventasse pubblico piuttosto che dopo, dove avrei dovuto supportare due versioni di esso per un po '.
  • Voglio supportare le migliori pratiche e se gli spazi dei nomi diventano le migliori pratiche per PHP, il mio progetto dovrebbe farne uso.

Da quello che posso dire, devi scegliere in un modo o nell'altro; non puoi fare entrambe le cose. Ci sono dei punti che non ho considerato? Ci sono segni oggettivi (niente guerre di fiamma, per favore) che indicano verso o contro gli spazi dei nomi diventare lo standard professionale per PHP? Gradirei qualsiasi intuizione o risorsa che saresti disposto a condividere in quanto dovrò prendere una decisione al più presto.

Risposte:


5

Due segni che gli spazi dei nomi in PHP sono qui per rimanere:

  1. Lo schema di denominazione PEAR è stato abbandonato a favore degli spazi dei nomi in PEAR2 .
  2. Uno degli obiettivi dichiarati di Zend Framework 2.0 è quello di essere un esempio dell'utilizzo di PHP 5.3 , sfruttando completamente gli spazi dei nomi, tra le altre cose. Ritengo che ciò costituisca una forte indicazione del fatto che Zend è pienamente impegnato negli spazi dei nomi e continuerà a sostenerli ed evolverli (si spera in meglio).

Sono pienamente d'accordo con te sul fatto che l'attuale implementazione degli spazi dei nomi sia carente, per non dire altro, ma i tuoi argomenti contro il loro utilizzo non sono così solidi. Anche nella loro forma attuale, gli spazi dei nomi prevedono:

  • Migliore organizzazione del codice,
  • Evitando collisioni di denominazione,
  • Contesto per classi, funzioni e costanti.

Tieni presente che la maggior parte degli argomenti contro gli spazi dei nomi PHP sono confrontati con implementazioni in altre lingue e non contro i loro meriti reali come funzionalità.


+1 per i collegamenti. Potresti espandere la migliore organizzazione del codice e punti di contesto? Ho un po 'di fatica a capire come fornisce una migliore organizzazione del codice. Sembra che la maggior parte dei progetti si attaccherà alla classe 1: 1 per la struttura dei file raggruppata in directory logiche, lo stesso che useresti nello schema di denominazione PEAR. Anche ZF2 sembra che stia usando la stessa directory e la stessa struttura di file nella maggior parte dei casi, ma proprio ora con spazi dei nomi. È diverso, ma non vedo necessariamente come sia migliore o più organizzato di directory e file ben noti in primo luogo.
VirtuosiMedia,

Ho anche problemi con il punto di contesto. Semmai, sembra che gli spazi dei nomi rimuovano il contesto per avere uno stile di codifica più conciso piuttosto che aggiungere il contesto. Ad esempio, se ho un'istanza di una nuova classe nel profondo di un file, ora ho bisogno di trovare dove è stato dichiarato lo spazio dei nomi per capire quale classe è piuttosto che averla immediatamente evidente dal nome della classe. A meno che non mi manchi qualcosa, sembra che gli spazi dei nomi siano meno dettagliati, ma a scapito della chiarezza.
VirtuosiMedia,

@VirtuosiMedia PEAR e i vecchi schemi di denominazione ZF emulano spazi dei nomi, quindi i miei tre punti sono in qualche modo veri anche per loro. Quello che sto cercando di sottolineare è che se quei punti sono veri nell'attuale implementazione degli spazi dei nomi PHP, i loro piccoli serpenti non sono sufficienti per non usarli. Con una migliore organizzazione del codice intendo principalmente attraverso i file, adottando una struttura e una gerarchia sensate e logiche per le tue classi, qualcosa che è ovviamente fattibile senza spazi dei nomi. Ma gli spazi dei nomi (e gli schemi che li emulano ) sono una caratteristica che ti aiuta a raggiungere tutti e tre i punti contemporaneamente.
yannis,

Gotcha. Grazie per il chiarimento. Vedete vantaggi significativi per gli spazi dei nomi reali rispetto agli spazi dei nomi emulati ?
VirtuosiMedia,

1
@VirtuosiMedia Tutti i punti per l'utilizzo degli spazi dei nomi che fai sulla domanda sono validi. A ciò aggiungerei che gli spazi dei nomi PHP aiutano il tuo codice a sembrare un po 'più naturale per i programmatori di sfondi diversi, qualcosa che potrebbe essere prezioso in un grande progetto. Inoltre, non esiste uno standard per gli spazi dei nomi emulati , certo che la maggior parte di essi sono praticamente uguali, ma l'utilizzo di spazi dei nomi effettivi garantisce che tutti stiano usando lo stesso schema. A proposito c'è un namespacer là fuori che potresti usare per namespacify il tuo codice.
yannis,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.