Come strutturare un'applicazione (e la sua interfaccia utente) in modo tale da poter gestire dati estranei e / o malformati?

-1

Recentemente ho fatto domanda per una posizione come sviluppatore di software. Come parte del processo di assunzione, mi è stato dato un incarico che comporta la lettura dei dati da un file.

Il fatto è che il file di esempio contiene dati estranei di proposito . Ad esempio, esiste un file CSV in cui i numeri decimali vengono talvolta scritti utilizzando i punti decimali e talvolta utilizzando le virgole (che sono anche i delimitatori delle colonne CSV). Il motivo, secondo la dichiarazione del problema, è che alcuni numeri sono stati aggiornati manualmente da un utente europeo non tecnico.

I dati stessi non sono difficili da leggere. Ho identificato alcuni modelli nei dati errati e ci sono un sacco di tecniche (come Regex) che posso usare per leggere i file caso per caso , ma queste tecniche sono di solito script, hacky e hard-coded.

Detto questo, mi chiedo se questo reclutatore volesse che sviluppassi un'applicazione in grado di gestire i dati estranei in generale, senza codificare la logica per questi casi particolari.

Per ottenere questo risultato ho trovato alcune soluzioni ragionevolmente creative, nessuna delle quali sono pienamente soddisfatto:

  • Compresi i controlli in modo che l'utente possa creare una catena di filtri e manipolazioni per i dati letti. Non penso che questa sia una buona soluzione perché è troppo tecnica per l'utente medio (un responsabile del negozio), che vuole solo caricare i dati e farli. Questo potrebbe funzionare se un programmatore è colui che carica i dati, ma poi la soluzione diventa troppo costosa.
  • Salvataggio di tutto, tranne le righe errate, e quindi mostrare all'utente quelli che sono malformati, permettendogli di correggerli prima di continuare.

Mi chiedo anche se il recruiter stia effettivamente chiedendo qualcosa di veramente semplice, che ho frainteso, portandomi a pensare troppo al problema, ma poi, la dichiarazione del problema dice che la mia soluzione deve essere sviluppata usando S.O.L.I.D. principi.

    
posta Lehonti 27.07.2018 - 09:03
fonte

2 risposte

0

La soluzione per la gestione di cose che non possono essere gestite è quella di rispondere all'utente e consentirgli di correggere.

Generalmente con l'elaborazione di input sporchi come questo si restituirebbe un elenco di righe errate con il messaggio di errore per ciascuno e consentire all'utente di correggere e rielaborare il file.

    
risposta data 27.07.2018 - 10:27
fonte
0
  • Fai altre domande. Non posso parlare per il tuo reclutatore, ma una buona persona apprezzerebbe che un candidato discuta il compito.

  • Lo stile di codifica, come l'uso dei principi SOLID, non è molto pertinente alle domande sulla specifica che hai richiesto. L'unica cosa che sembra correlata è che probabilmente vorrai avere una lista di gestori di formati che usano classi ereditate in modo da poterli provare in modo uniforme.

risposta data 28.07.2018 - 08:44
fonte

Leggi altre domande sui tag