Domanda di progettazione OOP

7

Sto lavorando su un'applicazione scritta in PHP usando i principi OOP. Le classi nella mia applicazione di solito rappresentano una tabella nel database; ad esempio, "studente", "insegnante", "classe", "pianificazione", ecc. Quando l'applicazione diventa sempre più complessa, inizio a correre in situazioni in cui sembra che scrivere una nuova query sia più efficiente / più veloce di riutilizzare gli oggetti + metodi di livello inferiore di quelli che ho già scritto. Qual è la filofilia standard quando si tratta di questo? Viene gestito caso per caso? sempre riutilizzi il tuo codice per impedirti di ripeterti, anche a costo dell'efficienza ottenuta da una query del database?

    
posta Matthew 05.07.2011 - 16:42
fonte

4 risposte

4

In "Fatti e errori dell'ingegneria del software", Robert Glass afferma che il riutilizzo del codice nel piccolo è un problema risolto, cioè è relativamente facile scrivere funzioni riutilizzabili per compiti semplici e ben definiti.

Ma Glass dice anche che il riutilizzo del codice nel grande è un problema irrisolto. Prendo questo per significare che non esiste una regola ferrea sul riutilizzo del codice. L'unica risposta è:

  • Applica il giudizio e l'esperienza il meglio che puoi.
  • Prototipo rapidamente.
  • Sii pronto a refactoring, se necessario.

Molti progetti cercano di semplificare lo spazio dei problemi formulando ipotesi o imponendo "convenzioni", ma queste semplificazioni sacrificano inevitabilmente alcune funzionalità di cui potresti aver bisogno.

    
risposta data 05.07.2011 - 18:49
fonte
2

Guarda l'approccio che i ragazzi del progetto Doctrine stanno predicando. Questo ha risposto a molte domande per me quando ho sofferto con l'architettura PHP che trattava gli elementi del database.

    
risposta data 05.07.2011 - 16:49
fonte
2

Potresti voler pensare al futuro (ma non lasciarti trasportare troppo). Ci sarà sempre un momento in cui vorrete cambiare il database rdbms, o magari passare a un cluster di server. Che cosa influenza cambi del genere sul tuo codice? Cosa succede se il database deve essere normalizzato e le definizioni delle tabelle cambiano? Il codice sarà facilmente modificabile per adattarsi ai nuovi requisiti, o sarà molto noioso scrub l'SQL in molti file nel codice.

Ci sono dei compromessi per ogni scelta di design, e non c'è sempre un modo giusto o sbagliato. devi solo pensare alla tua applicazione e a cosa potrebbe essere importante.

    
risposta data 05.07.2011 - 18:22
fonte
0

Niente è gratuito, la scelta dipende da te.

Voglio velocità, codificare tutto in assembler. Se hai bisogno di flessibilità, usa le librerie framework, fai il rollup delle tue interfacce.

Rendo sempre il mio codice riusabile e quando arriva il momento , ottimizza (abilita APC, ricarica automaticamente cache, refactor, compila come modulo PHP ecc.).

    
risposta data 05.07.2011 - 19:47
fonte

Leggi altre domande sui tag