Solution - #3
Conversation
|
|
||
|
|
||
|
|
||
| // while (valid is false) |
There was a problem hiding this comment.
Комментариев в репозитории быть не должно
|
|
||
| var validResult = result.Where(x => IsValidUrl(x)); | ||
|
|
||
| if (validResult.Count() == 0) |
There was a problem hiding this comment.
За счёт вызова Count() и затем ToArray() ты итерируешь дважды, то есть у тебя дважды выполняется IsValidUrl для каждого элемента массива. Это нежелательно, лучше заранее материализовать запрос (сделать из него массив/лист) и затем проверять его размер
| " https://un1ver5e.ru/api/files/rqdszqht.sjz.txt https://un1ver5e.ru/api/files/xujzw3wz.j2r.txt" + | ||
| " https://un1ver5e.ru/api/files/o1apoh5j.bdw.txt"; | ||
|
|
||
| public static FileInfo GetOutFileName() |
There was a problem hiding this comment.
- Название метода некорректное, он возвращает не FileName
- Его суть тоже непонятна, что и зачем он делает?
|
|
||
| public static class Debug | ||
| { | ||
| public static string Urls = |
There was a problem hiding this comment.
Зачем это поле в этом классе? Оно не используется в нём + публичные поля не readonly это плохо, так делать не нужно
| } | ||
|
|
||
| private static bool IsValidUri(string uri) => uri.StartsWith("https://"); | ||
| private static bool IsValidUrl(string uri) => uri.StartsWith("https://"); |
There was a problem hiding this comment.
Эта проверка не валидна, у URL более сложные правила валидации чем просто startswith
| { | ||
| Console.Write($"файл {file.Name} уже существует, перезаписать? y/n: "); | ||
|
|
||
| char answer = Console.ReadLine()!.ToLower()[0]; |
There was a problem hiding this comment.
Не надо считывать строку если тебе нужен только 1 символ - используй Console.ReadKey()
| if (answer == 'y') | ||
| { | ||
| File.Delete(file.FullName); | ||
| using (File.Create(file.FullName)) { } |
|
|
||
| public class StreamReaderUrl | ||
| { | ||
| private StreamReader _reader; |
There was a problem hiding this comment.
А Dispose'ить этот стримридер кто будет?
|
|
||
| public StreamReaderUrl(HttpClient http, string url) | ||
| { | ||
| _reader = new StreamReader(http.GetStreamAsync(url).GetAwaiter().GetResult()); |
There was a problem hiding this comment.
GetAwaiter().GetResult() это охренительно плохо - ты превращаешь асинхронный код в синхронный и блокирующий без какой-либо причины. Нужно пересмотреть архитектуру.
| var isDone = new bool[urls.Length]; | ||
| string line; | ||
|
|
||
| while (!isDone.All(x => x)) |
There was a problem hiding this comment.
Чтобы последовательно выполнить пачку задач тебе не нужна магия с массивом bool, можно просто пройтись циклом по задачам
Debug.cs был для дебага, не знаю как удалить его из коммита