Best practice per gestire input e output con diversi file simili a csv

1

Attualmente sto scrivendo un'applicazione con la seguente struttura:

  • input: l'equivalente di una cartella di lavoro Excel, ovvero alcune tabelle con intestazioni diverse e alcuni valori scalari. Rappresentano le proprietà dell'hardware, dei lavoratori, dei processi di produzione, ecc. In una fabbrica e alcuni parametri "globali".

  • elaborazione: calcola alcuni piani per la fabbrica

  • output: il piano, ovvero una specie di pianificazione, sotto forma di poche strutture di dati simili a tabelle, più alcuni KPI

L'applicazione corrente è implementata in python. Altre volte ho usato C ++ / C # / Java, R ....

Il mio problema riguarda i passaggi di input e output. Sembra che debbano essere ripetuti più e più volte per la maggior parte delle applicazioni che incontro e diventa noioso.

Quello che faccio di solito è creare alcune strutture di dati in memoria per rappresentare l'input e l'output. Potrebbero essere alcune classi ognuna delle quali rappresenta una riga di un tavolo, per così dire, o un datario dati C # / pandas / dict-of-dict.

Ciò che intendo per "noioso" è che ho bisogno di specificare la logica di input e output almeno tre volte ciascuna: una nel file, una nel codice e una nella documentazione.

Ad esempio, per un file CSV decido il numero, la posizione e il nome delle colonne e scrivo un modello o un esempio del file. Quindi scrivere e documentare del codice per analizzarlo o scriverlo e, infine, devo scrivere una "guida" che documenta come il programma gestisce i dati, in particolare i valori mancanti o non validi.

Ovviamente, quando il formato dei dati cambia, anche il codice deve cambiare.

Mi rendo conto che in una squadra più ampia questo non sarebbe un problema in quanto persone diverse gestiranno compiti diversi. Ma al momento sono principalmente io.

Esiste qualche pratica per astrarre e accelerare il processo di traduzione del formato di input e output rispettivamente per e dalla struttura dei dati della memoria? O alcune indicazioni su ulteriori fonti che potrebbero aiutarmi a capire meglio le opportunità e le insidie nell'implementazione di tali procedure?

Infine, apprezzerei anche il fatto che tu potessi indicarmi alcune utili librerie per questo in python, java o C #.

    
posta Andreas 04.03.2018 - 13:55
fonte

0 risposte

Leggi altre domande sui tag