Esegui operazioni nello script di immissione o crea una classe che crea solo un'istanza e chiama i metodi?

3

Sto costruendo un'applicazione perl che esegue le seguenti operazioni:

  1. Copia un gruppo di file (classe fileFetcher )
  2. Analizza ogni file (classe fileParser )
  3. Archivia alcuni dati da ciascun file in un database (classe dbHelper )

Ora, dovrei, nel mio main.pl (punto di ingresso dello script), costruire un'istanza di ognuno di questi e chiamare i metodi appropriati? o è meglio avere una classe "Applicazione" separata che fa tutte le istanze e le chiamate ai metodi, e lasciare che lo script principale abbia una chiamata come Application.run(args) ?

La classe, esisterebbe solo per creare un'istanza e chiamare metodi sulle cose, e non sembra giusto.

    
posta Anirudh Ramanathan 14.06.2013 - 10:49
fonte

3 risposte

4

Applica il principio YAGNI - purché tu abbia solo 3 oggetti e un solo punto di ingresso nel tuo script, probabilmente non hai bisogno di quella classe aggiuntiva Application , quindi non crearla. Ciò non renderebbe il tuo codice più leggibile o meglio mantenibile, quindi perché preoccuparsi (per ora).

Tuttavia, quando il tuo script diventa più grande in futuro e il tuo main.pl ottiene ulteriori responsabilità, può essere una buona idea rifattorizzare il codice di istanza di quelle operazioni combinate in una funzione separata . Dare a quella funzione un nome significativo che descriva l'operazione nel suo insieme sarebbe un'ottima idea. Inoltre, quando il tuo programma cresce in uno stato in cui questa operazione è solo una delle molte altre operazioni, sarebbe un motivo ancora migliore per rifattorizzare le cose fuori dal main.

Quando viene visualizzato più tardi che questa operazione richiede ulteriori informazioni "globali" sullo stato o sull'ambiente, questa nuova funzione può essere sottoposta a refactoring in una classe per rendere tale stato globale una variabile membro di tale classe. Normalmente questa classe non otterrà il nome Application , poiché questo nome non è molto descrittivo per ciò che fa l'operazione. Ma refactor quando succede, non prima.

AFAIK la nozione di avere una classe Application separata deriva da alcuni (soprattutto C ++) framework GUI dove questo è un modo standard per definire un tipo di punto di accesso e oggetto globalmente disponibile. Vedi, ad esempio, questo post SO , circa la QApplication class nel framework Qt. Non so se ci sono framework Perl con un approccio simile, ma finché non utilizzi o crei un framework di questo tipo, non vedo il punto di aggiungere una classe Application al tuo script Perl.

    
risposta data 17.06.2013 - 07:50
fonte
2

Mantieni la semplicità

Non creare una classe Application separata, non è necessario. Nulla mi infastidisce di più di dover passare da un rock dopo l'altro per capire cosa sta succedendo.

    
risposta data 17.06.2013 - 15:30
fonte
1

Non penso sia necessario in questo caso, ma non penso che sia necessariamente una decisione sbagliata - ma se lo fai, il tuo nome è. Non è un'applicazione, è effettivamente ciò che è il tuo principale. Quello che è, è un flusso di lavoro o un processo. L'applicazione non ha bisogno di essere un oggetto e non beneficia di essere un oggetto. Il tuo processo potrebbe.

Se ritieni che sia possibile o probabile che il tuo processo possa essere incorporato in un processo più ampio, vai avanti e rendilo un corso, fino ad allora, lascerei perdere.

    
risposta data 17.06.2013 - 18:03
fonte

Leggi altre domande sui tag