Обновить
1
0

Пользователь

Отправить сообщение

Надо просто понимать, что "страна" - это не единый согласованный огранизм. В ней много инстанций и пока одни говорят "скатертью дорога", другие видят в этом проблему и пытаются решить как могут.

Плохо тем, что это оторвано от реальности на столько, на сколько оторвана от реальности фантазия сценариста. Сценарист тоже человек, его восприятие субъективно. Логически корректные выводы, основанные на искажённых исходных данных принято называть бредом. Так вот, аргументация, основанная на киногероях - это чистой воды бред.

Я имел в виду автора статьи, который строит свою аргументацию на образе киногероя. Это была ирония

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

Большая проблема современности в том, что люди слепо перенимают модели поведения у героев кино и сериалов не осознавая, что сюжет любого фильма это лишь фантазия сценариста

"Нормальный" вес - это, простите, "психологический"?

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

Пока мы тут..., там дети в Африке по дофамину голодают :)

Батя так 20 лет назад в zoom ушел, до сих пор с мамой ждём его обратно :'(

Спасибо за еще одну жвачку для ума :) Четвертое измерение худо-бедно получается осознать, но на пятимерных каплях мозг стабильно говорит "стоп-стоп-стоп-хватит"

Любые стати кому-то нужны. В современном мире можно заниматься любой дичью и найти свою аудиторию

Знаете, вы только что выдали комментарий на уровне нейросетей предыдущего поколения. Вроде слова все правильные, и даже в предложения более-менее грамотно составлены. Но вот смысла за ними не прослеживается

Ну вы-то играли с доской, а ChatGPT - по памяти. Сами-то сколько ходов можете сделать без доски? Чтобы было честно, надо каждые два-три хода загружать в ChatGPT текущее положение фигур

Ух, так это и с некоторыми людьми так. Типичные блондинки или падшие алкоголики тоже выдают ответы лишь "похожие на нечто осмысленное". А рабочий код из всего множества людей можно получить уж совсем от ничтожно малой группы :)

Смысл этой надстройки как раз в том чтобы упростить работу с универсальными типами и методами когда на входе "нетипизированые" данные

Не надо работать с нетипизированными данными, типизируйте их :) У типизации много преимуществ, надо ими пользоваться. Главное из них - нахождение ошибок еще до запуска тестов, на стадии компиляции.

Даже для данных из внешнего источника рефлексия не нужна, смотрите:

public class Example
{
    public class Subject
    {
        public int Sum(int x, int y) => x + y;
        public double Multiply(double x, double y) => x * y;
    }
    
    private abstract class Case {}

    private class Case<T> : Case
    {
        public T Expected { get; init; }
    }

    private class SumCase : Case<int>
    {
        public int A { get; init; }
        public int B { get; init; }
    }

    private class MultiplyCase : Case<double>
    {
        public double A { get; init; }
        public double B { get; init; }
    }

    private static List<Case> ParseFile(string fileName)
    {
        ...
    }

    public static IEnumerable<object?[]> TestData
        => ParseFile("test-cases.txt")
          .Select(x => x switch { 
              SumCase sc => new object[] {(Subject s) => s.Sum(sc.A, sc.B), sc.Expected},
              MultiplyCase mc => new object[] {(Subject s) => s.Multiply(mc.A, mc.B), mc.Expected}
          });

    [Xunit.Theory]
    [MemberData(nameof(TestData))]
    public void TestTheory<T>(Func<Subject, T> act, T expected)
    {
        var subject = new Subject();
        var actual = act(subject);
        Assert.Equal(expected, actual);
    }
}

Какой ужас... Даже не в плане чистоты кода, а именно подхода.

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

public class Example
{
    public class Subject
    {
        public int Sum(int x, int y) => x + y;
        public double Multiply(double x, double y) => x * y;
    }

    public static IEnumerable<object?[]> TestData
        => new[]
        {
            new object[] {(Subject s) => s.Sum(1, 2), 3},
            new object[] {(Subject s) => s.Sum(0, 8), 8},
            new object[] {(Subject s) => s.Multiply(1, 2), 2},
            new object[] {(Subject s) => s.Multiply(8, 0), 0},
        };

    [Theory]
    [MemberData(nameof(TestData))]
    public void TestTheory<T>(Func<Subject, T> act, T expected)
    {
        var subject = new Subject();
        var actual = act(subject);
        Assert.Equal(expected, actual);
    }
}

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

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

Рефлексия же нужна в очень исключительных случаях, например в АОП, но никак не в тестах.

Я не специалист по криптовалюте, разве в пользовательском соглашении такая ситуация не прописана?

Вместо хаба "Машинное обучение" больше подойдет "Я пиарюсь".

Когда уже гуманитарии поймут, что техническую статью не стоит писать от первого лица и уж тем более начинать со слов "Привет! Меня зовут..."

1

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность