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

Add new example - SpotifyVoiceCommander #704

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

Conversation

Metalvast
Copy link

Пример с использованием Blazor, Maui, Fluxor и MudBlazor для управления Spotify с помощью голоса.

https://github.com/Metalvast/SpotifyVoiceCommander

Copy link

netlify bot commented Aug 4, 2024

👷 Deploy request for pr-fsd pending review.

Visit the deploys page to approve it

Name Link
🔨 Latest commit a35fa6e

Copy link
Member

@illright illright left a comment

Choose a reason for hiding this comment

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

Привет, спасибо за пример! Извини, что так долго тянем с ревью, просто я не знаю C#, из-за этого сложно проверить этот проект на наличие штук типа кросс-импортов)

Из того, что я понял, у меня есть следующие замечания:

  1. Заметил, что "SpeechRecognizer" — это и сущность, и фича. Обычно так не бывает, потому что у этих слоев разная семантика — в entities лежат бизнес-сущности, т.е. какие-то штуки или концепты из реального мира, с которыми взаимодействует приложение, а в features лежат всякие действия, которые юзеры могут делать в приложении, чтоб достичь чего-то ценного для них (например, коммент оставить).
  2. Разделение на сегменты в проекте не очень консистентное. Где-то сегменты есть, например, в Shared, а где-то их нет, например, в Pages.
  3. В Shared есть сегмент Helpers, такие сегменты создавать не рекомендуется. Вот тут есть объяснение этого правила в нашем линтере, там описано, почему — https://github.com/feature-sliced/steiger/tree/master/packages/steiger-plugin-fsd/src/segments-by-purpose

Еще есть вопросики, просто чтоб мне лучше понимать специфику создания приложений по FSD на шарпе:

  1. Что за файл Configure.cs в папке каждого слоя?
  2. В C# есть какой-то способ описать паблик апи, чтоб не лезть в глубину слайса, как, например, тут:
    using SpotifyVoiceCommander.Maui.Entities.SpeechRecognizer.Store.Actions;
    а сделать просто
    using SpotifyVoiceCommander.Maui.Entities.SpeechRecognizer;

@Metalvast
Copy link
Author

Привет.

Про замечания:

  1. Немного не понимаю, почему SpeechRecognizer это 2 слоя одновременно? Чтобы избежать этого - я выносил отдельно SpeechRecognizerFacade, как фичу, а SpeechRecognizer - просто держателем концепта аудиозаписи. И вроде как мне подобное предложил FSD-GPT))
  2. Поправлю.
  3. Поправлю.

По вопросам:

  1. По факту - это регистрация объектов DI-на каждом уровне (включая слайсы/сегменты), чтобы на самом верху, не иметь огромный МЕГА-ГИГА метод, который всё приложение регистрирует. Просто разделил регистрацию объектов на много мелких кусочков, которые потом собираются воедино.
  2. Да, можно, но... придётся руками фигачить ВРУЧНУЮ все неймспейсы. Меня на самом деле тоже убивает этот момент, ибо не хочется иметь по 50-100 импортов на файл, если говорить о приложении по-больше... В C# просто нет такой темы, как index.js/ts, чтобы записать туда импорты и потом переиспользовать их одним импортов в другом месте. В Blazor есть нечто похожее, но оно не распространяется на Code behind, только на саму вёрстку компонента.

P.S. Пересоздал сообщения, ибо случайно отправил с рабочего аккаунта))

@illright
Copy link
Member

Немного не понимаю, почему SpeechRecognizer это 2 слоя одновременно?

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

Спасибо за ответы на вопросы, стало понятнее. А можно ссылочку на строчку кода, где, например, используется какой-то объект, зарегистрированный через Configure.cs?

@illright
Copy link
Member

И вроде как мне подобное предложил FSD-GPT))

Да, с этим надо бы поосторожнее, он хорош как поисковый движок по чату, когда смотришь References, а сами ответы могут вполне быть чушью :D

Я бы тут порекомендовал не делать SpeechRecognizer сущностью, и весь код, связанный с распознанием речи, оставить в фиче RecognizeSpeech

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