Что касается ООП, вы хотите изучить SOLID .
Я бы посоветовал вам сделать это с помощью Test Driven Development.
Начните с малого, с простого фрагмента данных вашего журнала и напишите тест вроде: (вы найдете лучший способ сделать это с опытом и применить его к вашей ситуации):
[Test]
public void ReadSequence_FiveA_ReturnsProperList()
{
// Arrange
string sequenceStub = "AAAAA";
// Act
MyFileDecoder decoder = new MyFileDecoder();
List<string> results = decoder.ReadSequence(sequenceStub);
// Assert
Assert.AreEqual(5, results.Count);
Assert.AreEqual("A", results[0]);
}
Этот фрагмент тестового кода является лишь отправной точкой, и я пытался быть довольно многословным в утверждениях. Вы можете придумать более креативные способы со временем. Дело в том, чтобы начать с малого. После того, как этот тест пройден, добавьте еще один тест, в котором вы смешаете «AB» и измените свой декодер для правильной обработки. В конце концов, у вас будет большой набор тестов, которые обрабатывают ваши различные форматы. Используя TDD, вы будете на пути к правильному использованию SOLID. Всякий раз, когда вы находите что-то, что не можете протестировать, вы должны пересмотреть правила и посмотреть, не можете ли вы сделать это проще и внедрить зависимости.
В конце концов вы начнете насмехаться. Например, вы можете обнаружить, что вы предпочитаете ВСТАВИТЬ способность вашего класса MyFileDecoder
иметь зависимость, которая будет читать ваш файл журнала. В этом случае вы создадите фиктивный объект и передадите его в конструктор, а затем установите макет для возврата sequenceStub
при вызове метода.