Come analizzare due file in cui un file contiene i valori della variabile in un altro?

3

Ho due file:

file1: contiene il valore della variabile.

file2: contiene una raccolta di passaggi (sottoinsieme di raccolta di file1) da seguire. Il passo contiene il set di istruzioni.

 - > file1.txt 
     x1 = 34 
     x2 = 33
     x3 = 90 
     ...
     x12 = 101 
     x14 = 233 
     .. 
     x41 = 901
     ...


 -> file2.txt 

   step 1  
     - x1  
     - x10
     - x11

   step 2 
     - x12 
     - x14 
     - x41

   ..

   step n

   ..

design 1:

Creo la classe chiamata storeFile1 e storeFile2 in pratica per memorizzare ciò che è sempre nel file1 e nel file2. Ho anche creato il rispettivo parser per ciascuno di essi parseFile1 e parseFile2 che popola storeFile1 e storeFil2 . Quindi inserisco storeFile1 in storeFile2 .

Quindi quando l'utente chiede il passo 1 e le sue istruzioni restituisco un paio di:

storeFile2 obj; 
 ... // filled by parsing class first
 obj.get_step("step1");

1) nome del passo (ad esempio, passaggio 2)

2) set di istruzioni (es .: {101, 233, 901})

Mi stavo chiedendo se fare questo è sbagliato perché infrango il principio di responsabilità singola.

design 2:

Quello che pensavo non avrebbe infranto il principio di responsabilità singola era quello di creare un'altra classe caled class converter che gestisce la conversione. class storefile2 restituisce

1) name of step (eg step 2)
2) set of instruction (eg: {x12,x14, x41})

class converter contiene la classe storeFile1 e la classe storeFile2 , esegue la conversione e ritorno

1) name of step (eg step 2)
2) set of instruction (eg: {101, 233, 901}) // after conversion

Quale dei due design ritieni sia buono? (Penso anche che il design 2 sia un po 'macchinoso) o che ci sia un design migliore di questo?

    
posta vanta mula 28.10.2017 - 02:59
fonte

1 risposta

3

Per i principianti, non chiamerei le tue classi storeFile1 , storeFile2 , processFile1 e processFile2 . Darei loro nomi significativi, come instructionMapping per il file 1 e instructionOrder o instructionSet per il file 2. Io probabilmente uso per loro classi standard esistenti (presumendo che io comprenda correttamente la descrizione).

Sembra che il file 1 contenga un map (alias hash , alias dictionary ) con nomi di variabili e i relativi valori associati.

Sembra che il file 2 contenga un elenco di passaggi denominati che contengono nomi di variabili da eseguire (? o qualcosa) in un ordine particolare. Quindi sarebbe anche un map , ma invece di solo un map di nomi di variabili in valori, sarebbe una mappa di nomi di passaggi in array (o vector o list ) di nomi di variabili che puoi cercare nel primo map per ottenere i loro valori.

Quando si crea l'elenco di passaggi contenuti nel file 2, è possibile semplicemente sostituire i nomi delle variabili per i loro valori mentre lo si crea facendo riferimento al file 1.

    
risposta data 28.10.2017 - 05:07
fonte