2013-05-26 9 views
9

Quindi, prima ho sempre usato per usare lo stile procedurale codice php, come ad esempio:È accettabile utilizzare un mix di stile orientato agli oggetti con stile procedurale nella codifica di PHP?

mysqli_connect 

o

mysqli_prepare 

E ora ho cominciato per caso a mescolare il tutto e vorrei fare qualcosa di simile:

mysqli_connect(); 

che è in stile procedurale, e poi il successivo comando:

$mysqli->prepare(); 

che è stile orientato agli oggetti.

Il mio codice funziona ancora, ma se guardo php.net ogni volta che mostra degli esempi, l'intero esempio è orientato agli oggetti o procedurale. Quindi, sto chiedendo se è ok per me usare codice oggetto e codice php procedurale allo stesso tempo. Grazie in anticipo!

risposta

11

Mentre il codice è interamente una tua decisione e uno stile unico, direi che ci sono alcuni fattori da considerare quando si decide su procedurale, orientato agli oggetti o misto.

specifiche del programma -

In primo luogo, se siete su una squadra, la scrittura del programma per qualcun altro, o con le proprie specifiche, considerare o meno la scelta è già stata fatta.

disponibilità - faccia

Ammettiamolo. A volte le migliori librerie sono disponibili sia orientate agli oggetti che procedurali, e non entrambe. In tal caso, il passaggio da uno stile richiede l'utilizzo di una libreria completamente diversa o la creazione di una libreria di classi o funzioni. Una libreria disponibile può farti risparmiare tempo, con il solo costo di offset che è una funzione procedurale in un programma orientato principalmente agli oggetti, o viceversa.

Familiarità -

Simile a disponibilità, si può essere più familiarità con una certa classe o una serie di funzioni. Mentre potresti avere il tempo di fermarti e imparare un nuovo modulo di classe da aggiungere alle tue conoscenze, potresti essere in grado di risparmiare tempo utilizzando una libreria procedurale che hai già appreso e accuratamente testato. Quindi, se stai lavorando su una timeline, potresti voler andare con la libreria più familiare. Tuttavia, se stai ricercando e imparando, potresti prendere il tempo di leggere la documentazione, installare e testare una nuova soluzione.

Il trattamento dei dati e la velocità -

Un altro fattore a riflettere circa è come stai gestendo i dati. Se i dati sono all'interno della classe, la classe avrà probabilmente dei metodi per operare sui dati. In una tale situazione, la programmazione procedurale richiederebbe l'acquisizione dei dati dalla classe o dall'oggetto, operando sui dati e quindi aggiornando l'oggetto. Un design migliore sarebbe quello di includere la funzione nell'oggetto secondo me.

Tuttavia, se tutta la gestione dei dati è esterna alla classe, utilizzare una funzione potrebbe essere più veloce. Se si desidera utilizzare un metodo di classe, è necessario caricare la classe e possibilmente creare un oggetto. Anche i metodi statici possono essere più lenti di una funzione. Quindi se la velocità è una considerazione, ad esempio in un ciclo, allora considera quanti passi il tuo programma e PHP devono percorrere per arrivare alla funzione, alla classe o all'oggetto.

Guardando al futuro -

Se si vogliono selezionare tra la programmazione procedurale o orientata agli oggetti, quindi provare a prevedere quello che sarà più utile in futuro. Ho trovato che la programmazione orientata agli oggetti è molto utile per creare codice riutilizzabile. Ho trovato che la programmazione procedurale è molto utile per il codice della riga di comando e per l'organizzazione e l'uso di oggetti. È probabile che rimarranno gli stessi di come evolve l'informatica, e quindi il lavoro che ho svolto in precedenza è più probabile che sia di nuovo utile.

Al contrario, alcune librerie e linguaggi di programmazione possono incoraggiare uno stile. PHP supporta entrambi gli stili. Ma se la mia impressione generale è accurata, PHP si sta muovendo nella direzione degli stili orientati agli oggetti. Se si seleziona tra funzioni PHP e oggetti, guardare e vedere per quale versione di PHP sono state create le funzioni. Controlla anche se alcune delle funzioni procedurali sono ammortizzate o diventeranno obsolete. In tal caso, utilizzare l'approccio orientato agli oggetti, in quanto ciò renderà il programma più utile quando tali funzioni procedurali non saranno più supportate.

Spero che questo fornisca alcune considerazioni. Grazie.

1

Le cose peggiori accadono nel mondo della codifica. Alcuni direbbero che questo è semplicemente sbagliato. E altri verrebbero semplicemente pagati e saranno felici che il codice funzioni. Tutto dipende da che tipo di programmatore vuoi essere.

http://www.codingconfessional.com/

o

http://pragprog.com/the-pragmatic-programmer

+0

Volevo solo assicurarmi che questo funzionasse a prescindere da cosa. Se continuerà a funzionare, non importa cosa, quindi selezionerò la seconda opzione :). – edwardtyl

+0

C'è sempre almeno un po 'di codice procedurale nel più pesante progetto di php OOP (qualcosa deve istanziare il primo oggetto e far rotolare la palla.) – Orangepill

+0

In verità dovresti usare qualsiasi stile di codifica che meglio si adatta al tuo modello mentale di il problema. – Orangepill

1

Utilizzando sia non rompere il codice e tecnicamente "ok", ma prendere in considerazione il futuro manutenzione dell'applicazione da te o da qualcun altro. È molto più semplice leggere il codice se è coerente e pulito e risparmierai molto tempo dopo scegliendolo e applicandone uno (preferibilmente OOP).

Problemi correlati