Quindi ho assunto un progetto al lavoro che sto avendo difficoltà ad attaccare e mi piacerebbe ricevere feedback e suggerimenti.
Lavoro per un negozio online dove abbiamo un vecchio script di + 7k line che usiamo per creare vari feed di prodotto (principalmente per CSE come Google Prodotti, Pricegrabber, ecc.). È diventato un casino completo, soprattutto perché ogni feed è leggermente diverso e perché non c'è quasi nessuna separazione di preoccupazioni.
Sono stato incaricato di refactoring, un compito per il quale mi sono offerto volontario, e molto presto ho bisogno di un progetto. Il mio obiettivo principale è avere un sistema facile da mantenere e facile aggiungere nuovi feed in base alle esigenze. Se le prestazioni subiscono un po 'questo non è un problema enorme, anche se l'aumento delle prestazioni sarebbe fantastico se non interferisse con i primi due obiettivi.
Fino ad ora, la maggior parte di ciò su cui ho lavorato è stata piuttosto lineare e imperativa; i dati arrivano in alto e si spengono in fondo. Ma a causa dei vari feed con varie esigenze, mi chiedo se un approccio orientato agli oggetti sarebbe vantaggioso. La programmazione OO è ancora un po 'un mistero per me, quindi questo problema è stato un po' difficile da attaccare.
La mia idea di base è la seguente; gli oggetti esistono per ogni preoccupazione principale (immagini, descrizioni dei prodotti, gestione dei file, ecc.). Quindi, ogni feed ha un oggetto (magari implementando una classe astratta) che dialoga con gli altri oggetti, chiedendo le informazioni di cui ha bisogno. Ad esempio, l'oggetto Pricegrabber alimenta l'oggetto Immagine con un elenco di prodotti insieme ad alcuni parametri (dimensione massima dell'immagine, ecc.) E l'oggetto Immagine restituisce un elenco di prodotti con gli URL immagine corrispondenti. In questo modo, l'oggetto di Pricegrabber non sa né interessa come l'oggetto Image trova i suoi URL, né quali tabelle mysql vengono utilizzate o create dall'oggetto Image; inserisce semplicemente un elenco di prodotti e ottiene un elenco di URL di immagini. Pricegrabber fa questo con ogni oggetto principale fino a quando il file di feed non viene creato.
Domande principali:
- Questo schema di progettazione ha senso? C'è un modello migliore che potrei usare?
- OO sembra eccessivo per quello che sto cercando di realizzare?
- Anche se normalmente usiamo Perl per i nostri rapporti, varrebbe la pena usare PHP invece? Se è così, perché? (Mi piacerebbe usare Python o Ruby ma l'IT ha messo il kabosh su quello).