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

Заколюкин Степан #255

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

Conversation

StepanZakolukin
Copy link

.Save("../../../../TagsCloudVisualization/Task 2/CentralСloud.png");

visual.CreateAnImage(new CircularCloudLayouter(new Point(250, 150)), 50, 30, 80, 5, 25)
.Save("../../../../TagsCloudVisualization/Task 2/SmalСloud.png");
Copy link

Choose a reason for hiding this comment

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

Можно путь в константу вынести


<ItemGroup>
<Folder Include="TestErrorReports\" />
</ItemGroup>
Copy link

Choose a reason for hiding this comment

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

Вот этот блок вроде как можно удалить

public int DistanceBetweenTurns { get; private set; }
public int InitialRadiusOfTheSpiral { get; private set; }
public double AngleOfRotationInRadians { get; private set; }
public double AngleChangeStep { get; private set; }
Copy link

Choose a reason for hiding this comment

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

Не увидел чтобы свойство менялось, можно убрать сеттер

Copy link

Choose a reason for hiding this comment

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

Да и вообще лучше в константу вынести и убрать публик, тк это клиенту не надо, а ещё DistanceBetweenTurns, InitialRadius, AngleOfRotation. Это всё - реализация, клиенту не упало

Center в теории может пригодиться, наверное, можно оставить публичным

{
public static IEnumerable<Rectangle> GenerateCloudLayout(int amountRectangles,
int startWidthRectangles, int endWidthRectangles,
int startHeightRectangles, int endHeightRectangles,
Copy link

Choose a reason for hiding this comment

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

докопаюсь до нейминга. Лучше писать startRectangleWidth

А ещё есть Size, который хранит width и height, выйдет Size minSize, Size maxSize

Copy link

Choose a reason for hiding this comment

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

Ещё сюда бы прикрутить валидацию, что min < max

return rectangle;
}

private Rectangle GetANewRectangle(Point centerPoint, Size rectangleSize) =>
Copy link

Choose a reason for hiding this comment

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

в именах не принято писать артикли

InitialRadiusOfTheSpiral = Math.Min(rectangleSize.Width, rectangleSize.Height) / 2;

DistanceBetweenTurns = Math.Min(DistanceBetweenTurns,
Math.Min(rectangleSize.Width, rectangleSize.Height) / 2);
Copy link

Choose a reason for hiding this comment

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

ты 2 раза высчитываешь это, стоит вынести в переменную

Center = center;
AngleChangeStep = 0.017;
cloudOfRectangles = [];
DistanceBetweenTurns = 30;
Copy link

Choose a reason for hiding this comment

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

Я не знаю почему это 30, наверное, стоит это вынести в конструктор чтобы абстрактный клиент мог это настроить

Copy link
Author

Choose a reason for hiding this comment

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

Вынести то можно, просто это значение потом все равно изменяется в методе PutNextRectangle в зависимости от самого маленького размера, который когда либо поступал в метод, это сделано для того чтобы увеличить кучность облака. Исходя из этого, я подумал, что наверное не будет смысла в возможности пользователя указать какое-то значение в конструкторе, т.к класс будет впоследствии его менять по определенному правилу

Copy link

Choose a reason for hiding this comment

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

ну я так понял оно будет меняться только в меньшую сторону, и, как ты сказал, оно влияет на кучность. Может, пользователь захочет облако побольше и чтобы между тегами было расстояние

Copy link
Author

Choose a reason for hiding this comment

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

как бы в целом, для решения задачи создания облака слов это справедливо, но если говорить конкретно об задаче из домашки, то там был такой критерий: "Облако должно быть плотным, чем плотнее, тем лучше."

Copy link

Choose a reason for hiding this comment

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

Пон, пусть тогда будет так

@@ -17,16 +17,17 @@ public VisualizationCloudLayout(int width, int height, Color backgroundColor, IE
RectanglePalette = rectanglePalette.ToArray();
}

public Bitmap CreateAnImage(Point center, int amountRectangles,
public Bitmap CreateAnImage(CircularCloudLayouter cloudLayouter, int amountRectangles,
Copy link

Choose a reason for hiding this comment

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

Ну и тут тоже CreateImage

public class CircularCloudLayouterTests
{
private readonly static List<Rectangle> listRectangles = [];
private readonly static CircularCloudLayouter cloudLayouter;
Copy link

Choose a reason for hiding this comment

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

принято писать static readonly

Copy link

Choose a reason for hiding this comment

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

и статик не нужен

И я не понял как это работает: readonly поле не задаётся, но в конце TearDown его пробрасывает и вызывает

Copy link
Author

Choose a reason for hiding this comment

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

Это поле тут оказалась лишним, оно не использовалось для создания визуализации, я добавил перегрузку метода и убрал его

Comment on lines 7 to 10
public readonly int Width;
public readonly int Height;
public readonly Color BackgroundColor;
public readonly Color[] RectanglePalette;
Copy link

Choose a reason for hiding this comment

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

Тут тоже публичность надо убрать, клиенту это не интересно

var path = "../../../../TagsCloudVisualization/TestErrorReports/сloud.png";
var visual = new VisualizationCloudLayout(1920, 1080, Color.White, colors);

visual.CreateAnImage(cloudLayouter, 175, 30, 100, 5, 25, listRectangles)
Copy link

Choose a reason for hiding this comment

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

Вообще по хорошему следует передавать не layouter, а результат его работы, тк TearDown это уже доп операции с отчетом о тестах, отрубом баз данных, если были использованы, итд.

И в принципе передавать в аргументы объект, который совершает действие, это не хорошо, такого следует избегать. Делегаты - "вы не понимаете, это другое", тк там чаще всего передают функцию, совершающую мелкие и сходу понятные действия типа фильтрации или аггрегирования

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