Creazione di un database e degli operatori correlati utilizzando i file e JSON in java [chiuso]

0

Sto provando a scrivere un programma che legge le operazioni da un file. questi operatori hanno il seguente aspetto:

CREATE TABLE student(id:integer, gpa:decimal, name:string, family:string,isMale:Boolean) 
INSERT INTO student(id,gpa,name,fami 
SELECT id, name FROM student WHERE id=0 

allora il programma avrà un parser che traduce queste righe e fa un database per fare le operazioni. dopo l'analisi e l'esecuzione di ogni riga, un registro verrà creato in un altro file:

ERROR: Duplicate column name 
family Table student created
ERROR: Table student already exists 
ERROR: Invalid table name st 

Per quanto riguarda il compito, non dovrei usare pacchetti preparati per la memorizzazione di dati come sql. quindi ho scelto JSON (JSON - simple) per creare un database più organizzato e userò un'espressione regolare per parser.

la mia prima domanda è se sto usando gli strumenti giusti per questa attività.

e la mia seconda domanda è come dovrei progettare il programma in modo che abbia una buona qualità OOP rispetto a come vengono scritte le classi e i metodi.

per esempio sto scrivendo un codice prototipo che legge le linee semplici dal file di input, quindi semplicemente le divide in un array e le scrive in un file di testo di output (vedi questa domanda per il codice che ho scritto). come dovrei progettare gli oggetti? dovrebbe scrivere e leggere le parti essere metodi in una stessa classe? dovrebbero essere metodi statici?

    
posta Vicarious 01.04.2015 - 14:40
fonte

1 risposta

1

Should write and read parts be methods in a same class?

Non sarei d'accordo con questo perché leggere e scrivere sono due responsabilità separate e se si vogliono seguire buone pratiche come Principio di Responsabilità Unica , li separerei in due classi. Potrebbe sembrare eccessivo, ma vedrai che con il tuo codice in crescita in futuro sarà più facile da mantenere.

Se il tuo codice non crescerà e questo è solo un progetto personale, è comunque una buona idea migliorare le tue capacità seguendo le buone pratiche.

Inoltre, se hai a che fare con i database, cambierei il nome da Reader a Repository e da Writer a Persistence (puoi aggiungere o anteporre i nomi per renderli più specifici, naturalmente).

Should write and read parts be methods in a same class? should they be static methods?

No. Dovresti usare solo metodi statici, variabili in un mondo orientato agli oggetti quando ne hai assolutamente bisogno e hai una buona argomentazione. La linea di fondo è:

Non utilizzare la statica a meno che non sia necessario.

Vorrei invece rendere il metodo non statico e aggiornare le classi nel tuo metodo principale e chiamare invece la lettura e la scrittura dall'istanza dell'oggetto.

Qui sopra sono riportate informazioni più generiche per il futuro riferimento, tuttavia di seguito puoi trovare alcuni suggerimenti più specifici per la modifica del codice:

1) Non usare le variabili globali per jsonObject e l'output invece di crearle nel tuo metodo principale. Di fatto non hai nemmeno bisogno di jsonObject e output.

2) Lascia che il tuo metodo di lettura crei jsonObject stesso e lo compili con i dati. Una volta che i dati sono stati popolati sull'oggetto appena creato, puoi restituirli.

3) Il tuo metodo writer prenderà anche un jsonObject e lo userà per scrivere sul file.

4) Il metodo writer non ha realmente bisogno di restituire nulla.

Spero che abbia un senso.

    
risposta data 01.04.2015 - 15:57
fonte

Leggi altre domande sui tag