Conversation
…т и цвета из палитры
Pasha0666
left a comment
There was a problem hiding this comment.
как минимум не вижу теста на DI что он работает и собирает все что нужно
ну и в целом тестов маловато
TagCloud.Client/DI/TagCloudModule.cs
Outdated
| builder.RegisterType<WordSingleColorizerCreator>() | ||
| .Keyed<IWordColorizerCreator>("single") | ||
| .SingleInstance(); | ||
| builder.RegisterType<WordPaletteColorizerCreator>() | ||
| .Keyed<IWordColorizerCreator>("palette") | ||
| .SingleInstance(); | ||
| builder.RegisterType<WordGradientColorizerCreator>() | ||
| .Keyed<IWordColorizerCreator>("gradient") | ||
| .SingleInstance(); | ||
| builder.RegisterType<HexColorParser>() | ||
| .As<IColorParser>() | ||
| .SingleInstance(); | ||
| builder.RegisterInstance(new TagCloudVisualizer(Color.AntiqueWhite)) | ||
| .As<ITagCloudVisualizer>(); |
There was a problem hiding this comment.
А почему в DI константы проникли? которые должен по идее пользователь задавать
| using CommandLine; | ||
| using TagCloud.Client; | ||
| using TagCloud.Client.CLI; |
There was a problem hiding this comment.
почисти юзинги, еще видел в файлах других
TagCloud.Client/DI/TagCloudModule.cs
Outdated
| public class TagCloudModule(string boringWordsPath) : Module | ||
| { | ||
| protected override void Load(ContainerBuilder builder) | ||
| { | ||
| builder.RegisterType<WordsProviderResolver>().As<IWordsProviderResolver>().SingleInstance(); | ||
| builder.RegisterType<TxtWordsProvider>().As<IWordsProvider>().SingleInstance(); | ||
| builder.RegisterType<DocWordsProvider>().As<IWordsProvider>().SingleInstance(); | ||
| builder.RegisterType<DocxWordsProvider>().As<IWordsProvider>().SingleInstance(); | ||
| builder.RegisterType<WordLowercaser>() |
There was a problem hiding this comment.
Ну и более важный вопрос, а с такой регистрацией получиться сделать GUI?
There was a problem hiding this comment.
Теперь не зависим от каких-либо параметров/констант при регистрации типов, вполне сойдет для вынесения в отдельный core-модуль регистрации в дальнейшем
| public interface IWordsProviderResolver | ||
| { | ||
| IEnumerable<string> ReadWords(string path); | ||
| } No newline at end of file |
There was a problem hiding this comment.
Обычно Resolver отдает сущность, а не делает действие
There was a problem hiding this comment.
Поправил, теперь Resolver отдает IWordsProvider'а
| public class WordProcessor(IWordNormalizer normalizer, IWordFilter filter) : IWordProcessor | ||
| { | ||
| public IEnumerable<string> Process(IEnumerable<string> words) => | ||
| words.SelectMany(text => Regex.Split(text, @"\P{L}+")) // защита от мусора в docx/doc файлах, сплитим только по небуквенным символам | ||
| .Select(normalizer.Normalize) | ||
| .Where(word => !string.IsNullOrWhiteSpace(word)) | ||
| .Where(filter.IsValid); | ||
| } No newline at end of file |
There was a problem hiding this comment.
На 11 строке использую filter, который IWordFilter, который регается в DI как BoringWordsFilter
There was a problem hiding this comment.
Апдейт, теперь регистрируем фабрику фильтров, но всё равно в конечном итоге в IWordFilter попадает BoringWordsFilter
…gWordsProvider'а, теперь WordFilter - фабрика
No description provided.