-
Notifications
You must be signed in to change notification settings - Fork 303
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Шевелев Георгий #206
base: master
Are you sure you want to change the base?
Шевелев Георгий #206
Conversation
TagCloudDi/Container.cs
Outdated
builder.Register(c => | ||
new Point(c.Resolve<Settings>().ImageWidth / 2, c.Resolve<Settings>().ImageHeight / 2) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
А если еще какому-то классу понадобится точка?
TagCloudDi/Container.cs
Outdated
var builder = new ContainerBuilder(); | ||
builder.Register(c => settings); | ||
builder.Register(c => | ||
new Point(c.Resolve<Settings>().ImageWidth / 2, c.Resolve<Settings>().ImageHeight / 2) | ||
); | ||
builder.RegisterType<ArchimedeanSpiral>().AsSelf(); | ||
builder.RegisterType<CircularCloudLayouter>().AsSelf(); | ||
builder.RegisterType<TextReader>().AsSelf(); | ||
builder.RegisterType<TextProcessor>().AsSelf(); | ||
builder.RegisterType<RectangleGenerator>().AsSelf(); | ||
builder.RegisterType<Drawer>().AsSelf(); | ||
builder.RegisterType<ConsoleApplication>().As<IApplication>(); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Очень смущает прямая регистрация классов без интерфейсов, а если когда-то придется поменять реализацию какого-то из классов или просто добавить новую? Придется проходится по всем местам где эти классы используются. Интерфейсы очень полезный инструмент, который позволяет фиксировать четкие контракты и при необходимости подменять реализацию
{ | ||
public class RectangleGenerator(TextProcessor textProcessor, Settings settings, CircularCloudLayouter layouter) | ||
{ | ||
public IEnumerable<(Rectangle rectangle, string word, float fontSize)> GetRectanglesData() |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ммм не уверен что кортеж (tuple) это хорошая идея, а если придется в возвращаемом значении еще что-то добавить? А если придется еще 100 значений добавить?
{ | ||
public class TextReader | ||
{ | ||
public IEnumerable<string> GetWordsFrom(string filePath) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Вот отличный пример того, о чем я написал в контейнере. А если текст нужно будет прочитать из API? Сюда можно было бы передать ссылку на endpoint из которого можно получить текст
…и цвета, исправил на использование интерфейсов, добавил тесты на layouter
public void Run() | ||
{ | ||
var image = drawer.GetImage(); | ||
image.Save(settings.SavePath + '.' + settings.ImageFormat.ToLower(), settings.GetFormat()); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Может лучше интерполяцию строк?
TagCloudDi/Drawer/Drawer.cs
Outdated
foreach (var rectangleData in rectanglesGenerator.GetRectanglesData()) | ||
using (var font = new Font(settings.FontName, rectangleData.fontSize, FontStyle.Regular)) | ||
gr.DrawString( | ||
rectangleData.word, font, new SolidBrush(Color.FromName(settings.TextColor)), |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
А зачем создавать кисточку каждый раз? Кажется ее можно создать до цикла и вызывать просто здесь.
Это во-первых не будет создавать нагрузку на сборщик мусора
Во-вторых, позволит написать вызов метода в одну строчку
@69raccoon96