Conversation
underkoder
left a comment
There was a problem hiding this comment.
Следует подумать над интерфейсами Decryptor, ProcessThreadGroundService и другими, если какие-то методы лишние. снаружи должны быть недоступны, то убрать их.
Очень много логики зашито внутрь, при том, что интерфейсы прописаны и, вроде как, система должна быть гибкой.
Предлагаю подумать больше над разделением ответственности, ограничить зависимости и интерфейсы, где возможно использовать композицию.
Сейчас интерфейсы перегружены, где-то не вынесены важные зависимости, поэтому код воспринимается трудновато
|
|
||
| namespace RGR2 | ||
| { | ||
| abstract class Decrypter |
There was a problem hiding this comment.
Если нет общего кода работы, то абстрактный класс бесполезен.
Предлагаю сформировать IDecrypter без лишних подробностей, которые выдаются наружу, если они ненужны.
Например:
StartWords, PathDirectoryEncryptedWords и другие можно убрать
| List<string> found = FindWords(); | ||
|
|
||
| Directory.CreateDirectory(PathDirectoryEncryptedWords); | ||
| IWriterService writerService = new TextFileWriterToColumn(PathDirectoryEncryptedWords + $"\\{Number + 1}.{Word}.txt"); |
There was a problem hiding this comment.
Суть абстракции в том, чтобы уйти от конекртных реализаций.
В класс надо передать через сеттер или конструктор IWriterService, который может писать в разные места, используя одинаковые по своей сигнатуре методы
| new TextFileReader(Dictionary).ReadStrings(), | ||
| new MatrixByFile2x2(new TextFileReader(Matrixes)).GetMatrixes(), | ||
| "EncryptedWords", | ||
| new FileProcessing("EncryptedWords", "EncryptedStructedWords", "Total")); |
There was a problem hiding this comment.
Здесь правильная зависимость.
Выше строки читаешь и получаешь матрицы напрямую, и передаешь внутрь Decrypter.
Можно было передать внутрь декриптора только сервисы, только нужны ему данные, а все остальное он мог получить как ему удобно
No description provided.