È pericoloso per un programma fare affidamento sui numeri di riga nei dati di input?

5

Recentemente ho aderito a un progetto software e ho scoperto che l'architettura corrente si basa su numeri di riga di file di dati di input. Ad esempio, i dati sulla riga 248 di un file di input corrispondono all'ID file 247.

Il mio istinto mi dice che questa è una pratica pericolosa e cattiva, ma sono troppo verde per essere sicuro. Le persone che lavorano al progetto dicono che lo hanno fatto per ottenere prestazioni migliori, e che non dovrebbe essere un problema fintanto che stiamo attenti a mantenere lo stesso formato. Sono preoccupato che le future modifiche possano inavvertitamente portare a un disastro, e dubito che i guadagni in termini di prestazioni siano così grandi.

Questo sarebbe considerato una cattiva pratica? O è una cosa perfettamente normale da fare?

Modifica per chiarimenti: i dati sono sempre generati dalla macchina, non da una persona, quindi è al sicuro al riguardo. È un'importazione ricorrente e ci sono più tipi di file con lo stesso formato (ID = numero di riga - 1) ma dati diversi. Pertanto, un errore in un file di input lo renderebbe incoerente con tutti gli altri dati.

    
posta Agargara 14.12.2016 - 03:14
fonte

2 risposte

6

Is it dangerous for a program to rely on line numbers in input data?

No. Non dovrebbe essere pericoloso.

Would this be considered bad practice? Or is this a perfectly normal thing to do?

Può essere una cattiva pratica, ma dipende molto da come il client & servizio gestire il contratto dati / api.

Se il servizio convalida il formato di input prima di elaborarlo, dovrebbe andare bene. Se i client utilizzano una libreria fornita dal servizio e possono chiamare solo tramite questa libreria, allora dovrebbe andare bene poiché la libreria imporrà questo modello eccentrico.

Se il servizio presuppone che il formato sia corretto, i dati sono validi e riguardano la sua attività; hai implementato cattive pratiche. Questa cattiva pratica può andare bene se il costo della corruzione è basso o inesistente.

PS: non sono così sicuro dei miglioramenti delle prestazioni, ma se sei nuovo, è logico apprendere quali sono i vantaggi e come sono arrivati a decidere su questa particolare soluzione.

    
risposta data 14.12.2016 - 03:34
fonte
3

In teoria, purché il formato dei dati sia ben definito, non importa se è "ottimizzato" in questo modo.

Tuttavia, penso che tu abbia ragione a essere preoccupato.

  • non c'è modo di elaborare atomicamente una singola riga
  • nessun modo per controllare la posizione nel file è corretto
  • I dati
  • che includevano un carattere di avanzamento riga avrebbero effetto su altre righe

L'aggiunta di un singolo campo ID intero sembra un piccolo prezzo da pagare per la tranquillità

    
risposta data 14.12.2016 - 12:29
fonte

Leggi altre domande sui tag