Pull to refresh
0
0

.NET программист

Send message

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

А других не завезли, полноценная поддержка в языке только у него.

Пожалуй, в каждом первом учебнике по Rust его преимущества описываются через недостатки C++. В Java//C# GC и сложность доступа к указателям закрывают все вопросики.
С передачей владения умными указателями и мутабельным алиасингом можно смело продолжать косячить.

Почему-то в C# есть один тип строк.

Теперь голову ломают как вкорячить UTF-8.

программисты на C# не работают с разными кодировками?

Конвертациями в православный UTF-16 и сырым byte[], который валидной строкой быть не обязан.

попробуем адаптировать RAII для C

IntArray_create и IntArray_destroy играют роли конструктора и деструктора.

Это все те же обычные функции, которые все так же нужно не забывать вызывать в нужных местах руками. Сделали инстанс IntArray где-то вне IntArray_create - рискуете получить невалидный объект. Не вызвали вовремя IntArray_destroy потеряв указатель - ресурс утек. RAII нужен как раз затем, чтобы такого не происходило, но его тут нет.

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

Простое решение про кэш в RAM не позволит шарить его между инстансами приложения, в отличие от.

Если не используется мышь и печати много, то носить руку к нампаду смысла еще меньше - верхний ряд цифр доступен пальцам сразу из базовой позиции, можно переходить на цифры и обратно вообще без отрыва.

Не понимаю как может быть удобно вводить цифры занимаю 2 руки.

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

Это позволяет ставить клавиатуру "буквенным" блоком напротив себя, чтобы комфортно печатать не поворачиваясь корпусом или ассиметрично перенося руки влево. При том мышь получится располагать ближе - на месте цифрового блока.

Другое дело, непонятно, зачем нампад сейчас нужен именно справа. Его использование не предполагает параллельную печать левой рукой, при том путь правой руки до мыши увеличивается почти вдвое. При необходимости, цифровой блок можно располагать слева (отдельным девайсом) для левой руки, симметрично мыши. Так для удобной навигации между полями ввода и Tab ближе, и правой руке параллельно доступна для управления мышь.

Получается, что даже если хотеть странного, то можно найти способ сохранить код основного алгоритма в чистоте.

Полагаю, сертификация ФСТЭК для некоторых заказчиков имеет решающее значение.

как сделать свой доменный класс для ошибок и сделать так, чтобы ошибки из сторонних библиотек его наследовали?

Перехватывать стронние исключения и заворачивать их в свои типы. Чтобы этот мусор не мешал читать алгоритм - библиотеку можно спрятать под прокси/фасад.

Вот пример типа из Rust (с первого раза же понятно, что это за тип? сарказм )

Если код отформатировать по-человечески и отбросить имена модулей импортами, то в коде отчетливо начнет читаться нечто похожее на полную форму select-запроса.

Код
use diesel::query_builder::{
    select_clause::SelectClause,
    distinct_clause::NoDistinctClause,
    where_clause::WhereClause,
    order_clause::NoOrderClause,
};
use diesel::expression::{
    select_by::SelectBy,
    grouped::Grouped,
    operators::Eq,
    bound::Bound,
};
use schema::users;

SelectStatement<
    FromClause<users::table>,
    SelectClause<SelectBy<User, _>>,
    NoDistinctClause,
    WhereClause<
        Grouped<
            Eq<
                users::columns::username,
                users::columns::username>>>,
    NoOrderClause,
    LimitOffsetClause<
        LimitClause<Bound<BigInt, i64>>,
        NoOffsetClause>>

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

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

Как вариант - генерировать нужный код.

  1. Заведомо совместимое железо

  2. Нет переплаты за ненужную ОС

1
23 ...

Information

Rating
5,088-th
Registered
Activity

Specialization

Software Developer, Fullstack Developer
Senior
C#
Rust