Skip to content

feat: CLI Menu, based on nin#2

Open
ntfs-sys wants to merge 6 commits into
mainfrom
feature/Menu
Open

feat: CLI Menu, based on nin#2
ntfs-sys wants to merge 6 commits into
mainfrom
feature/Menu

Conversation

@ntfs-sys

@ntfs-sys ntfs-sys commented Apr 27, 2026

Copy link
Copy Markdown
Collaborator

Структура одного пункта меню.
Содержит название пункта и действие в виде std::function<void()>.
Действие не принимает аргументов, поэтому все необходимые данные должны быть захвачены лямбдой или получены внутри неё.
Пример использования:

menu_item item{"Сложить", [f, b] { std::println("{}", f + b); }}; 
//(кириллица в названиях переменных)

@BlueberryJelly

BlueberryJelly commented Apr 28, 2026

Copy link
Copy Markdown
Collaborator
  • Необходимо пересмотреть подход к типизации.
    Проблема проявляется при объявлении числовых переменных: когда не требуются отрицательные значения, лучше использовать без знаковые типы std::size_t
    Например, в 20 и 22 строках лучше изменить тип переменных.

  • При объявлении шаблонов типу даётся не очень понятное название F, следует заменить на более говорящее.

  • Следует избегать дополнительных зависимостей, например от nin.

  • Нужно избавиться от функции run() или пересмотреть её реализацию. Проблема заключается в цикле.

  • Следует оставить решение о сериализации исполняемого кода пользователю.

  • Стиль: для названия структурных типов и их методов используется CamelCase.

  • Следует параметризовать menu_item, чтобы в случае необходимости пользователь мог передать свою реализацию (пример: см. ErrorPolicy в nin). Можно реализовать через создание интерфейса.

@Dauxdu Dauxdu requested review from BlueberryJelly and Dauxdu April 29, 2026 08:43
@Dauxdu Dauxdu added enhancement New feature or request good first issue Good for newcomers labels Apr 29, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request good first issue Good for newcomers

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants