Skip to content

Якшибаев Данил#36

Open
gogy4 wants to merge 9 commits intokontur-courses:masterfrom
gogy4:master
Open

Якшибаев Данил#36
gogy4 wants to merge 9 commits intokontur-courses:masterfrom
gogy4:master

Conversation

@gogy4
Copy link
Copy Markdown

@gogy4 gogy4 commented Dec 3, 2025

{
var center = new Point(0, 0);

// ---------- Spiral & Layouter ----------
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Если очень хотелось описать что ты регаешь, то не практичней ли использовать методы? И по их названиям определять что ты регаешь внутри.
Сами комменты очень странные. Походят на нейронку.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

Прогнал код, чтобы выровнять отступы и убрать лишние пробелы. Комментарии забыл почистить)

Ну там не только с отступами cleanup

Знаю что можно через шорткат в райдере

@@ -0,0 +1,13 @@
namespace TagCloud.Abstractions.Generic;

public abstract class TxtFileProviderBase<T>(string filePath)
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Зачем здесь дженерик?

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

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

@@ -0,0 +1,11 @@
using TagCloud.Abstractions;
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Почисти using-и. В Райдере есть под это шорткаты


namespace TagCloud.Implementations;

using System.IO;
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Странный using как будто откуда то скопипастил конкретный кусок кода


// ---------- Words Source Providers ----------
builder.RegisterAssemblyTypes(typeof(TxtWordsSourceProvider).Assembly)
.AssignableTo<IWordsProvider<IWordsSource>>()
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Мне кажется ты сильно намудрил с наследованиями и абстракциями. Всю эту мешанину читать анриал.
В чём разница, например IWordsSource и IStopWordsProvider?
Зачем это усложнение в IWordsProvider, который создаёт класс, который уже читает файл?
Зачем завязывать контейнер на какие-то входные параметры и уже от них строить контейнер? Это всё только усложняет код. Нет смысла в красивых абстракциях и расширяемости если поддерживать код нереально. Всегда лучше упрощать.

Попытайся прийти к более простой и читаемой картине. Нужно получить слова - есть один ответственный, который внутри себя уже усложняет логику, умея доставать данные из разных источников и тд.
Ну и зависимость контейнера от внешних переменных кажется плохой. Мне получается нужно его каждый раз заново собирать под разные форматы файлов - это странно. Зависимость может быть от чего-то фундаментального - от окружения, но уж никак не от сценария приложения.


namespace TagCloud.DI;

public class TagCloudModule(string wordsFile, string stopWordsFile) : Module
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

и всё таки, зачем контейнеру знать входные данные программы? Как, например, мне использовать этот контейнер в WPF приложении? Сценарий:

  1. Выбираю путь до основного файла в инпуте,
  2. Выбираю путь до стоп-слов файла в инпуте
  3. Жму кнопку "отрисовать".
  4. Каждый раз пересобираю контейнер в бизнес-коде, чтобы подстроиться под новые filePath-ы. Не кажется это странным? Или ты будешь сетить эти вещи в качестве каких-то переменных контейнера и разруливать это в контейнере?(что тоже кажется кринжовым)

Copy link
Copy Markdown
Author

@gogy4 gogy4 Jan 12, 2026

Choose a reason for hiding this comment

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

Понял, сделал фигню

Правильно понял, что пути нужно передавать в методах а не в конструкторе и тогда регистрация зависимостей будет гибкая и не нужно будет в TagCloudModule передавать пути?

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

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Ну тебе просто не нужно было завязываться на такой входной параметр. Можно представить как, например, твой код работал бы в приложении WPF. Я запускаю приложение, выбираю файл в выпадашке - ты, чтобы обработать его, польностью пересобираешь DI. При чём не только для 1 файла, но и стоп слова. Это ненужная работа. DI это про то, чтобы собрать его на старте приложения и забыть. Дальше просто дёргать из него что нужно

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