Come faccio a gestire troppe funzioni in PhP (o altri programmi)

1

Realizzo programmi molto lunghi. Ci sono molti file.

Fondamentalmente ho troppe funzioni.

Ogni codice può praticamente chiamare ogni funzione.

Se voglio estrarre una funzione e archiviarla come una libreria in modo che altre funzioni possano usarla, sono nei guai. Questo perché un file ha una funzione usata da altri file che ha una funzione usata da altri file.

Suppongo che alcune funzioni dovrebbero essere "private" e non possono essere chiamate da altre funzioni, ma PhP non ha funzioni private.

Un'altra soluzione che sto pensando è usare namespace.

Mi piace evitare l'orientamento agli oggetti in PHP, anche se potrebbe essere una soluzione.

Quindi, come faccio a separare i miei codici in parti gestibili?

Attualmente tutti i miei file si trovano nella stessa directory. Forse una libreria diversa dovrebbe trovarsi in una directory diversa?

Che cosa fa il professionista?

    
posta user4951 28.12.2016 - 11:58
fonte

2 risposte

3

Sembra che tu abbia problemi con la generalizzazione

Per generalizzare una funzione, devi capire cosa fa la funzione in comune, e poi passarla alle differenze (ciò che è non comune).

Ad esempio, la seguente è una funzione di ordinamento. Accetta una matrice o una raccolta di qualche tipo e una funzione di confronto. La funzione di confronto è un comparatore personalizzato che indica all'algoritmo di ordinamento quale dei due valori arbitrari nella raccolta è maggiore.

function sort(array a, function comparator c(x,y)
{
    // sort occurs here.  Comparator function used to compare values during sorting
    // Comparison is generalized, because you can supply any arbitrary comparator.
}

Un altro esempio di generalizzazione è generici :

function sort<T>(collection<T> a, function<T> c)
{
    // will work for any type, with compile-time type safety.
}
    
risposta data 28.12.2016 - 18:18
fonte
0

Anche se "ti piace evitare il phP orientato agli oggetti", dovresti davvero imparare a usare la progettazione orientata agli oggetti se vuoi scrivere un software di grandi dimensioni. L'OOP in PhP è un po 'attaccato, ma i framework "tacked on" continueranno a funzionare.

L'idea alla base dell'OOD è che un componente dovrebbe sapere come fare tutto direttamente correlato ad esso, in modo da non dover pensare a come le parti interagiscono. Ad esempio, un'automobile conterrà non solo le parti (dati) di un'auto (come ruote, motore, volante, posizione), ma conterrà anche informazioni su come fare tutte le cose che una macchina dovrebbe essere in grado di fare (inizio , guidare avanti, indietro, girare).

Il potenziale vantaggio è enorme. Se hai bisogno di un oggetto Car per fare qualcosa, non hai bisogno di usare e mantenere qualche funzione fluttuante nello spazio globale. Devi solo dire alla macchina cosa fare attraverso una semplice interfaccia, che in questo caso sarebbe il volante, il pedale dell'acceleratore, il pedale del freno e il cambio.

Se specifichi cosa fanno in modo astratto quelle funzioni interne, un programmatore che usa un oggetto Car non ha bisogno di sapere come funziona il motore o come i dati sono memorizzati all'interno del auto per usare l'oggetto (immagina se avessi bisogno di una laurea in ingegneria meccanica per guidare una macchina nella vita reale). Tutto quello che un programmatore deve sapere sono semplici istruzioni che spiegano che cosa succede quando usano l'interfaccia (volante, ecc.). Finché l'implementazione per quelle funzioni interne soddisfa le specifiche, è sicuro programmarle attorno. Se hai diverse implementazioni di Car per situazioni diverse (ad esempio, Berlina e Camion), lo stesso codice funzionerà per entrambi gli oggetti Car. Ancora più importante, se il codice deve cambiare perché trovi bug, la modifica del codice non interromperà il sistema.

Ho lavorato in enormi sistemi che non sono OO, ed è un enorme dolore. Imparare ad avvicinarsi da una prospettiva OO è qualcosa che renderà la tua vita molto più facile a lungo termine.

    
risposta data 28.12.2016 - 19:29
fonte

Leggi altre domande sui tag