Search
Write a publication
Pull to refresh
11
0.2
Send message

по 700 строк бойлерплейта,

Так они у вас никуда не делись, только теперь размазаны по всему солюшену.

в java в finaly можно получить исходное искоючение и что-то сделать (не перехватить но обработать).

А можно пример этого чуда?

В C# не так. Чтобы получить исключение, нужно его перехватить. Перехватывать исключения, не перехватывая их (без catch), нельзя.

я не понимаю как try finaly решает проблему "нужно вывести ошибку в том ui компоненте, откуда пользователь кнопку нажал, а catch у нас где угодно но не там"

Это try-catch:

private void button1_Click(object sender, EventArgs e)
{
    try {
        throw new InvalidOperationException("The answer to the ultimate question was not 42");
    }
    catch (Exception ex) {
        // Вывести ошибку в том ui компоненте, откуда пользователь кнопку нажал
        button1.Text = $"The exception was: {ex.Message}";

        // Пробрасываем выше по стеку в "где угодно"
        throw;
    }
}

Вариант второй. Nullable включен. Теперь мы точно знаем, что метод возвращает строго SomeModel и без вариантов.

К сожалению, это не так. NRT - это рекомендация, компилятор помогает как может, но гарантировать не null не может.

Проверка на null не нужна. При этом и внутри метода GetSomeModel null вернуть уже не получится - компилятор будет ругаться.

return null!;

Делать так конечно не надо. Но технически возможность есть.

У таких конструкций и паттернов есть фатальный недостаток,

Сильно зависит от языка. Например, в Rust есть discriminated unions, #[must_use] и try operator. Вместе они делают работу с results удобной и одновременно убирают заботливо разложенные грабли (например, случайно проигнорировать ошибку нельзя). Win-win.

В C# ничего этого нет, вот и выходит, что работать с исключениями гораздо проще. Но в целом, это не вина паттерна.

Ну вот потребность выхода из вложенных циклов - повседневная жизнь.

try-finally не ловит и не обрабатывает исключения (в нём нет блока catch).

Полагаю, поинт был не про библиотеки и их внутренности, а про код, который ты или твоя команда пишет.

А в чём принципиальная разница?

Имхо, это сносно работает только для несложных игрушечных примеров. При первых же сложностях вроде async/await читаемость сильно падает.

Серьезно? А что кто-то с ним реально сталкивается сейчас, кроме программистов на ассемблере?

Разумеется. В рантайме того же нашего дотнета уйма goto.

а теперь представьте, что нужно генерировать OpenAPI, чтобы клиент понимал, какие коды возможны, а у вас все NotFound и пр. в едином обработчике.

А в чём сложность? Если у вас minimal api, возвращайте из функции Results<> [1], например Results<Ok<Foo>, NotFound, Conflict>. Если MVC, навесьте ProducesResponseType [2].

В .NET вопрос часовых поясов, дат и времён, в общем-то, решён: NodaTime. От вас нужно правильно подобрать входные типы данных (в библиотеке 7 видов дат и времён), остальное вам подскажут типы.

Это не баг, не уязвимость (что?) и не ошибка логики игры. Это буквально фича оригинальной Wordle, смысл которой в том, что вы отгадываете слово, а потом идёте в твиттор, на реддит или пикабу, выкладываете вот такую штуку и меряетесь, у кого длиннее отгадано быстрее. Так вот чтобы это работало, слово у всех должно быть одно.

// Find the row containing the target cell.
let row_marker = format!("<row r=\"{}\"", row_num);
if let Some(row_start) = self
    .sheet_xml
    .windows(row_marker.len())
    .position(|w| w == row_marker.as_bytes())

Это ваша библиотека так с XML работает?

Хабы: .NET, C#

Скажите, а где здесь .NET или C#? Если статья не имеет отношения к указанным технологиям, уберите её из этих хабов, пожалуйста.

Это какие коты не социальные животные?

Спойлер: там всё, как и ожидается. Связный список для добавления и удаления лучше.

У вас там разница меньше статистической погрешности.

Кроме того, при увеличении N заметна разница в потреблении памяти обеими структурами (LinkedList делает меньше выделений памяти).

Так вы создали для листа худший случай: когда вы в него добавляете новый элемент, он у вас забит под завязку, и листу приходится реаллоцироваться.

Ну как, iFeel - это те же самые инфракрасные команды, только пульт дополнительно передаёт свою температуру + ставит специальный бит, чтобы кондей не пикал. Оно автоматизируется и перезаписывается точно так же, как и все остальные настройки. То есть если вы пользуетесь одновременно и пультом, и HA, оно друг другу мешает, хоть iFeel, хоть нет.

Не соглашусь! Когда ты идёшь домой и есть возможность заранее включить кондей, чтобы охладить квартиру - это уже кайф. А проблема с обратной связью решается дверным/оконным датчиком, приклеенным на шторку. На основе датчика и команды Toggle получаете команды On и Off :)

1
23 ...

Information

Rating
6,305-th
Registered
Activity