Skip to content

Копытов Михаил#219

Open
Mihail3141 wants to merge 7 commits intokontur-courses:masterfrom
Mihail3141:master
Open

Копытов Михаил#219
Mihail3141 wants to merge 7 commits intokontur-courses:masterfrom
Mihail3141:master

Conversation

@Mihail3141
Copy link
Copy Markdown


public Result<int> RunGenerate(GenerateOptions options)
{
var inputFile = Path.Combine("..", "..", "..", "SourceFile", options.InputFilePath);
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Вроде не супер критично, но идейно как-то странно. По моим субьективным ощущениям чаще делают если не указан путь ищет в текущей директории, а если указан, то путь относительно екзешника или полный. То что мы заставим всех пользователей мучится с этой папкой SourceFile звучит плохо

"Поместите файл в папку SourceFile/ или укажите правильный путь с -i");

FontStyle fontStyle;
if (!Enum.TryParse(options.FontStyle, true, out fontStyle))
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Можно занести обьявление в TryParse (out FontStyle fontStyle)

Comment on lines +28 to +29
// using var rectPen = new Pen(Color.FromArgb(120, 255, 255, 0), 1.5f);
// graphics.DrawRectangle(rectPen, tag.rect);
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Эт убрать надо или раскомментить

public Result<List<string>> GetWordsFromFile(string pathToFile)
{
if (!File.Exists(pathToFile))
throw new FileNotFoundException("File not found", pathToFile);
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Тут внезапно решил на английском ошибки писать) В таких вещах нужно придерживаться одного стиля

public Result<List<string>> GetWordsFromFile(string pathToFile)
{
if (!File.Exists(pathToFile))
throw new FileNotFoundException("File not found", pathToFile);
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

И выбросил исключение, а самописных их быть не должно по условию домашки :)

return Result.Fail<List<string>>(
$"No reader for extension {Path.GetExtension(pathToFile)}");

var lines = reader.ReadTextLines(pathToFile);
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Это бы в Result обернуть который исключение поймает, если там ридер внезапно упадет


public WordProcessor AddWordFilter(Func<MyStemWord, bool> filter)
{
_filters.Add(filter ?? throw new ArgumentNullException(nameof(filter)));
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Опять сами исключение бросаем. На всякий случай явно проговорю, что это окей, просто можно усложнить себе жизнь в рамках домашки ;)

var output = ReadOutput(process);

return process.ExitCode != 0
? throw new InvalidOperationException($"MyStem failed with exit code {process.ExitCode}")
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Опять сами исключение кидаем :)


foreach (var line in lines)
{
var item = JsonSerializer.Deserialize<JsonElement>(line.Trim());
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

На всякий случай подсвечу, что дефолтный сериализатор если не может спарсить в текст вроде упадет с исключением. Это надо будет обработать, если заменить в тернарнике где вызываем ParseOutput() самописное исключение на result

Comment on lines +101 to +113
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);
}
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

А эту штуку точно не получится по другому собрать и вывести? Ты же вроде пользуешься библиотечкой для парсинга параметров

Просто этот текст точно будет устаревать, поддерживать его не хочется и плюс мы дублируем информацию которая где-то есть. И отсупы кстати лучше делать спецсимволом таба (\t), а не пробелами

Если не получится, я бы вообще эту функцию удалил, догадаются -h написать поди :P

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