Che percorso progettuale dovrei prendere?

3

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).
posta Jason Hamje 03.02.2014 - 23:44
fonte

1 risposta

2

Does this design pattern make sense?

Quello che hai descritto non è un modello, ma piuttosto una specie di descrizione informale dell'architettura dell'applicazione. È meglio non pensarci adesso.

Prova a creare un vocabolario di dominio che descriva tutte le funzioni della tua applicazione:

  • feed (che ha campi defferent),
  • prodotto (che consiste di foto, descrizione, prezzo, ecc.),
  • cliente / utente,
  • ordine,
  • ...

Questo ti aiuterà a capire quali classi / interfacce avrai probabilmente bisogno. I modelli verranno dopo, come (e se) ne hai bisogno.

Se non hai familiarità con OOP, non dovresti iniziare a usare i pattern subito. Basta imparare le basi e provare a scrivere il codice più semplice che fa il lavoro. Non scrivere il codice che non capisci (vedi programmazione settoriale Cargo ).

Does OO seem like overkill for what I'm trying to accomplish?

Assolutamente non eccessivo. OOP è solo un modo per risolvere problemi, non una tecnologia. Certo, può essere usato in modo sbagliato, ma quello che hai ora (pezzo solido di codice strutturale ) è molto più sbagliato.

While we normally use Perl for our reports, would it be worth it to use PHP instead?

Non ho alcuna esperienza con Perl, ma penso che non importi molto. Scegli quello che ti piace di più, ricorda che PHP è più semplice (IMO) e ha una community più ampia (che non è necessariamente migliore).

    
risposta data 04.02.2014 - 01:20
fonte

Leggi altre domande sui tag