Skip to content
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

Сазонов Александр #27

Open
wants to merge 39 commits into
base: master
Choose a base branch
from

Conversation

AlexxSaz
Copy link


namespace TagCloud.Logic.CloudLayouts;

public class SimpleCloudLayout : ICloudLayout

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Предлагаю вместо терминологии Simple использовать Default или Standard или ещё как-нибудь, а то как будто обесцениваешь свою работу, что написал самый простой "simple" код))

Во всей кодовой базе предлагаю обновить

Comment on lines +26 to +27
public IReadOnlyCollection<IWordTag> GetTags(IEnumerable<string> words, IWordHandler wordHandler,
ISizeCalculator sizeCalculator)

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  1. А почему эти зависимости не через конструктор получил? Они ведь зареганы в конструкторе
  2. Не очень понимаю, почему этот метод вообще тут, он ведь никак не работает с окружением SimpleCloudLayout. По идее просто этот код надо перенести в место вызова этого метода и удалить его отсюда и из интерфейса

Comment on lines +7 to +15
public IPointGenerator CreatePointGenerator(LogicSettings logicSettings) =>
logicSettings.PointGeneratorType switch
{
PointGeneratorType.Astroid => new AstroidPointGenerator(logicSettings),
PointGeneratorType.Spiral => new SpiralPointGenerator(logicSettings),
_ => throw new ArgumentOutOfRangeException(nameof(logicSettings.PointGeneratorType),
logicSettings.PointGeneratorType,
"No such pointGenerator type.")
};

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

При появлении нового IPointGenerator придется добавлять его в фабрику, не очень будет удобно это делать, и вроде бы можно этого избежать. Давай в месте вызова этой фабрики будет получать массив IPointGenerator из контейнера и выбирать нужный по переданному типу (скорее всего придется добавить в интерфейс ещё один метод, который бы помогал определять, поддерживает ли генератор тот или иной переданный тип генерации из опций, фабрика тогда вообще перестанет быть нужна

{
var result = new List<IWordTag>();
const int rectangleOutline = 1;
var cloudLayout = new SimpleCloudLayout(logicSettings, new SimplePointGeneratorFactory());

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

А почему лейаут создаем руками, а не через конструктор? Это ведь тоже зависимость, которую можем зарегать

var result = new List<IWordTag>();
const int rectangleOutline = 1;
var cloudLayout = new SimpleCloudLayout(logicSettings, new SimplePointGeneratorFactory());
var bitmap = new Bitmap(

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Не освободил ресурсы у bitmap


namespace TagCloudTests.SizeGenerator;

public class RandomSizesGenerator : ISizesGenerator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Используется в рамках одного тест-класса, можно просто добавить приватный метод, который будет делать то же самое и тем самым избавиться от лишнего интерфейса и класса

private static readonly IFileReader Reader = new SingleWordInRowFileReader();

[Test]
public void Handle_ShouldReturnWordsInLowerCase_AfterExecutionWithUpperCaseWords()

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Тут вроде подмешал альтернативный нейминг - класс называется с Should, но в то же время Should есть и в тест-методе

Comment on lines +19 to +23
var oneWordCollection = new List<string>
{
"ясно", "ясно", "ясно", "ясно", "ясно", "ясно"
};
var expectedNumberOfWords = oneWordCollection.GroupBy(x => x).Count();

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Это немного лишняя нагрузка, можешь сразу создать словарь и в нем написать ["ясно"] = 6

Comment on lines +21 to +25
imageSettingsProvider.SetWidth(updatedSettings?.Width ?? 1000);
imageSettingsProvider.SetHeight(updatedSettings?.Height ?? 1000);
imageSettingsProvider.SetFontFamily(updatedSettings?.FontFamily ?? new FontFamily("Arial"));
imageSettingsProvider.SetMaxFontSize(updatedSettings?.MaxFontSize ?? 24);
imageSettingsProvider.SetMinFontSize(updatedSettings?.MinFontSize ?? 8);

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Тут те же комменты, что писал ранее

Comment on lines +21 to +23
logicSettingsProvider.SetAngleStep(updatedSettings?.AngleStep ?? 0.01);
logicSettingsProvider.SetRadiusStep(updatedSettings?.RadiusStep ?? 0.01);
logicSettingsProvider.SetPointGenerator(updatedSettings?.PointGeneratorType ?? PointGeneratorType.Spiral);

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

И тут


public class SimpleWordHandler(IFileReader reader) : IWordHandler
{
private const string BoringWordsFilePath = "BoringWordsDictionary.txt";

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

А как пользователь может влиять на список этих слов, если не захочет, например, выводить слово "Контур"?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants