Conversation
|
|
||
| public Result<int> RunGenerate(GenerateOptions options) | ||
| { | ||
| var inputFile = Path.Combine("..", "..", "..", "SourceFile", options.InputFilePath); |
There was a problem hiding this comment.
Вроде не супер критично, но идейно как-то странно. По моим субьективным ощущениям чаще делают если не указан путь ищет в текущей директории, а если указан, то путь относительно екзешника или полный. То что мы заставим всех пользователей мучится с этой папкой SourceFile звучит плохо
| "Поместите файл в папку SourceFile/ или укажите правильный путь с -i"); | ||
|
|
||
| FontStyle fontStyle; | ||
| if (!Enum.TryParse(options.FontStyle, true, out fontStyle)) |
There was a problem hiding this comment.
Можно занести обьявление в TryParse (out FontStyle fontStyle)
| // using var rectPen = new Pen(Color.FromArgb(120, 255, 255, 0), 1.5f); | ||
| // graphics.DrawRectangle(rectPen, tag.rect); |
| public Result<List<string>> GetWordsFromFile(string pathToFile) | ||
| { | ||
| if (!File.Exists(pathToFile)) | ||
| throw new FileNotFoundException("File not found", pathToFile); |
There was a problem hiding this comment.
Тут внезапно решил на английском ошибки писать) В таких вещах нужно придерживаться одного стиля
| public Result<List<string>> GetWordsFromFile(string pathToFile) | ||
| { | ||
| if (!File.Exists(pathToFile)) | ||
| throw new FileNotFoundException("File not found", pathToFile); |
There was a problem hiding this comment.
И выбросил исключение, а самописных их быть не должно по условию домашки :)
| return Result.Fail<List<string>>( | ||
| $"No reader for extension {Path.GetExtension(pathToFile)}"); | ||
|
|
||
| var lines = reader.ReadTextLines(pathToFile); |
There was a problem hiding this comment.
Это бы в Result обернуть который исключение поймает, если там ридер внезапно упадет
|
|
||
| public WordProcessor AddWordFilter(Func<MyStemWord, bool> filter) | ||
| { | ||
| _filters.Add(filter ?? throw new ArgumentNullException(nameof(filter))); |
There was a problem hiding this comment.
Опять сами исключение бросаем. На всякий случай явно проговорю, что это окей, просто можно усложнить себе жизнь в рамках домашки ;)
| var output = ReadOutput(process); | ||
|
|
||
| return process.ExitCode != 0 | ||
| ? throw new InvalidOperationException($"MyStem failed with exit code {process.ExitCode}") |
|
|
||
| foreach (var line in lines) | ||
| { | ||
| var item = JsonSerializer.Deserialize<JsonElement>(line.Trim()); |
There was a problem hiding this comment.
На всякий случай подсвечу, что дефолтный сериализатор если не может спарсить в текст вроде упадет с исключением. Это надо будет обработать, если заменить в тернарнике где вызываем ParseOutput() самописное исключение на result
| private static Result<int> PrintHelpAndExit(IEnumerable<Error> errors) | ||
| { | ||
| Console.WriteLine("\n📖 Использование:"); | ||
| Console.WriteLine(" program.exe -i input.txt -o output.png [опции]"); | ||
| Console.WriteLine("\n📋 Опции:"); | ||
| Console.WriteLine(" -i, --input Путь к входному файлу"); | ||
| Console.WriteLine(" -o, --output Путь к выходному изображению"); | ||
| Console.WriteLine(" -c, --count Количество тегов (по умолчанию 100)"); | ||
| Console.WriteLine(" -fs, --min-size Минимальный размер шрифта (по умолчанию 10)"); | ||
| Console.WriteLine(" -f, --font Название шрифта (по умолчанию Arial)"); | ||
| Console.WriteLine(" -h, --help Показать справку"); | ||
| return Result.Ok(1); | ||
| } |
There was a problem hiding this comment.
А эту штуку точно не получится по другому собрать и вывести? Ты же вроде пользуешься библиотечкой для парсинга параметров
Просто этот текст точно будет устаревать, поддерживать его не хочется и плюс мы дублируем информацию которая где-то есть. И отсупы кстати лучше делать спецсимволом таба (\t), а не пробелами
Если не получится, я бы вообще эту функцию удалил, догадаются -h написать поди :P
@Yrwlcm