Как разобрать два файла, где один файл содержит значения переменной в другой?

У меня есть два файла:

file1: содержит значение переменной.

file2: содержит набор шагов (подмножество коллекции file1), которым нужно следовать. Этап содержит набор инструкций.

 - > 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

   ..

дизайн 1:

Я создаю класс под названием storeFile1 и storeFile2 в основном хранить то, что когда-либо было в файлах1 и file2. Я также создал соответствующий синтаксический анализатор для каждого из них parseFile1 и parseFile2, который заполняет storeFile1 и storeFil2. Затем я помещаю storeFile1 внутри storeFile2.

Затем, когда пользователь запрашивает шаг 1 и свою инструкцию, я возвращаю пару:

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

1) имя шага (например, шаг 2)

2) набор инструкций (например: {101, 233, 901})

Мне было интересно, плохо ли это, потому что я нарушаю принцип единой ответственности.

дизайн 2:

То, что, как я думал, не нарушило бы принцип единой ответственности, заключалось в создании другого класса с кадром class converter который обрабатывает преобразование. class storefile2 возвращает

  

1) название этапа (например, шаг 2)
   2) набор команд (например: {x12, x14, x41})

class converter содержит класс storeFile1 и class storeFile2, выполняется ли преобразование и верните

  

1) название этапа (например, шаг 2)
  2) набор команд (например: {101, 233, 901}) //после преобразования

Какой из двух дизайнов вы считаете хорошими? (Я также думаю, что дизайн 2 немного громоздкий), или есть ли дизайн лучше, чем это?

3 голоса | спросил vanta mula 28 +03002017-10-28T03:59:58+03:00312017bEurope/MoscowSat, 28 Oct 2017 03:59:58 +0300 2017, 03:59:58

1 ответ


3

Во-первых, я бы не назвал ваши классы storeFile1, storeFile2, processFile1 и processFile2. Я бы дал им значимые имена, например instructionMapping для файла 1, а instructionOrder или instructionSet для файла 2. Я, вероятно, использую для них стандартные существующие классы (предполагая, что я понимаю ваши описание правильно).

Похоже, что файл 1 содержит map (aka hash, aka dictionary), который имеет имена переменных и связанные с ними значения.

Похоже, что файл 2 содержит список именованных шагов, которые содержат имена переменных для выполнения (? или что-то) в определенном порядке. Таким образом, это также будет map, но вместо простого map имен переменных в значениях, это будет карта имен шагов для array (или vector или list) имена переменных, которые вы могли бы найти в первом map, чтобы получить их значения.

При создании списка шагов, содержащихся в файле 2, вы можете просто подставить имена переменных для своих значений по мере их создания, ссылаясь на файл 1.

ответил user1118321 28 +03002017-10-28T06:07:43+03:00312017bEurope/MoscowSat, 28 Oct 2017 06:07:43 +0300 2017, 06:07:43

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132