Pull to refresh
1
0
Мурадов Мурад @muradovm

User

Send message
Вторая задача скорее на знание математики. Решается теоремой Безу.
5*2 — 3*2 = 4
эх, а я сдал как раз с [-n 12] параметром
Есть проверка в первом случае — «customer?.»
>> Речь шла не о рефакторинге, а о написании кода в первый раз
Это спор о терминах. Автор предлагает один код вместо другого, но их поведение не эквивалентно.

>>Да и при рефакторинге менять поведение — также допустимо, просто изучать и переписывать в таком случае надо больше кода.
Как бы то ни было автор предлагает именно этот кусок кода. Мы можем предположить, что он изолирован от всего остального.
public void DoSomething(Customer customer)
{
    string address = customer?.Employees
        ?.SingleOrDefault(x => x.IsAdmin)?.Address?.ToString();
    SendPackage(address);
}

и
public void DoSomething(Customer customer)
{
    Contract.Requires(customer != null);
 
    string address = customer.GetAdminAddress();
    SendPackage(address);
}

Так все таки разрешается передавать нулевой customer в метод или нет? Два этих участка кода не эквивалентны — рефакторинг не удался.
Давайте разберем изначальный код:
public void Process()
{
    int result = DoProcess(new Order(), null);
}
 
private int DoProcess(Order order, Processor processor)
{
    return processor?.Process(order) ?? 0;
}

Если processor == null, то нужно вернуть 0. Если бы DoProcess был бы открытым, то мы вынуждены были бы оставить это поведение при рефакторинге. Соответственно, оставили бы как одну из допустимых веток кода.
Сработает. Но на .NET уже написано много кода с использованием значимых типов. А это значит, что «подставить» везде "?." вместо "." — отказаться от обратной совместимости.
Вариант 3 очень спорный. Customer намеренно открыл Employees — какие тут могут быть нарушения.
public void Process()
{
    var processor = new EmptyProcessor();
    int result = DoProcess(new Order(), processor);
}
 
private int DoProcess(Order order, Processor processor)
{
    return processor.Process(order);
}

Если DoProcess не был бы приватным, то все равно пришлось бы писать проверку на null.
Вариант 2 — первый пример с list. Можно научить компилятор оптимизировать такие вещи.
Использование "?." вместо "." везде невозможна потому, что BCL предусмотрены значимые типы.
int i = Person.Age;
Видел всех троих. В итоге остановился на Gopher. У него отличная дикция кстати.
Я про то же. Зачем нужен этот человекочитаемый тест программисту.
Хотя выше писали обратное — такие тесты смотрят.
BDD не отменяет возможность использования NUnit. Просто эти тесты будут интеграционными.
Оборачивание 5ти вызовов API в человекочитаемый вид имеет не только плюсы, но и минусы. Например, любые изменения в API нужно будет руками править в тестах. Как часто человек, не знающий языка программирования заглядывает в тесты проекта? Стоит ли ради этого отказываться от нормальной поддержи тестов?
Вот уже как лет пять слежу за SpecFlow, даже пробовал не раз, но никак не пойму, как его использовать в реальном проекте. Как минимум высокая стоимость написания и поддержки теста по сравнению с NUnit каким-нибудь. Можете привести пример, где именно без SpecFlow не обойтись?
Еще в Канаде недавно какой-то закон приняли (не буду врать, не помню, в чем там именно дело), и теперь куча компаний из-за того, что email может попасть канадским партнерам, обулись добавлять во все письма такие вот подвалы.
Не изменилось. У меня так в договоре написано
Зачем «держать структуру системы в голове» для CodeFirst? Кажется, вы зря отвергли этот вариант.
>> public int GetTheTenthElement(IEnumerable collection)
>> public int GetTheTenthElement(IReadOnlyList collection)
я завидую, с какой легкостью ужесточается интерфейс метода
>> Вместо того, чтобы использовать системный ГСЧ, в Doom есть фиксированная таблица с 256 случайными числами, откуда извлекаются значения в соответствии с игровой логикой.

Интересно, как логика выбирала значение из таблицы. Тоже должна была делать это как-то случайно.
1
23 ...

Information

Rating
Does not participate
Location
Копейск, Челябинская обл., Россия
Date of birth
Registered
Activity