Pull to refresh
29
0
Send message

Мечтают ли разработчики о декларативных тестах — 2. Особое мнение

Reading time15 min
Views1.4K

По непроверенным данным, половина несчастных случаев происходит после слов "смотри, как я умею", другая же половина — после "ерунда, смотри, как надо".

Тут один приятель, увидев фокус с тестами без тестов с использованием обобщенных аттрибутов из preview версии C# и особенностей экосистемы NUnit, отметил, что все сделано транс-ректально, а сам бы он применил Fody, и вышло бы гораздо лучше. Демонстрировать, к сожалению, ничего не стал. А мне вспомнился комментарий к описанию другого преодоления концептуального ограничения языка. Тогда руки не дошли попробовать, а сейчас вот решил глянуть, что это за птица, и проверить, поможет ли она написать более элегантное решение.

Читать далее
Total votes 2: ↑0 and ↓2-2
Comments3

Мечтают ли разработчики о декларативных тестах

Reading time21 min
Views2.8K
image
Завершение работы над прошлой публикацией (читать которую для понимания этой совсем не обязательно) принесло мне не мир, но меч мечту о мире. Мире, в котором можно писать более выразительные строго типизированные тесты и вместо

[TestCase(typeof(Impl), "command")]
public void Test(Type impl, string cmd) =>
    ((I)Activator.CreateInstance(impl)).Do(cmd);

использовать

[TestCase<Impl>("command")]
public void Test<TImpl>(string cmd) where TImpl : I, new() =>
    new TImpl().Do(cmd);

И он оказался ближе, чем я мог подумать. А дальше пошло-поехало…
Читать дальше →
Total votes 4: ↑4 and ↓0+4
Comments0

История одного НЕ-ОТВЕТА на stackoverflow

Reading time25 min
Views22K

Недавно наткнулся на stackoverflow на такой вопрос Need to check if code contains certain identifiers и в ходе размышлений преобразился из «маленького помощника Санты» в «адвоката дьявола». Что, конечно, гораздо веселее. Но мораль не в этом.

Читать далее
Total votes 46: ↑45 and ↓1+44
Comments22

Не заблудиться в трёх if'ах. Рефакторинг ветвящихся условий

Reading time11 min
Views11K
На просторах интернета можно найти множество описаний приемов упрощения условных выражений (например, тут). В своей практике я иногда использую комбинацию замены вложенных условных операторов граничным оператором и объединения условных операторов. Обычно она дает красивый результат, когда количество независимых условий и выполняемых выражений заметно меньше количества веток, в которых они комбинируются различными способами. Код будет на C#, но действия одинаковы для любого языка, поддерживающего конструкции if/else.

image
Читать дальше →
Total votes 17: ↑15 and ↓2+13
Comments14

Вызываем конструктор базового типа в произвольном месте

Reading time4 min
Views9.7K
Недавно проходил собеседование, и среди прочих был вопрос о порядке вызова конструкторов в C#. После ответа собеседующий решил продемонстрировать эрудицию и заявил, что вот в Java конструктор базового типа можно вызвать в любом месте конструктора производного типа, и C#, конечно, в этом проигрывает.

Утверждение оказалось ложью, враньем и провокацией
image

Но это уже не имело значения, потому что вызов был принят.

image
Читать дальше →
Total votes 18: ↑16 and ↓2+14
Comments12

Как ‌С#-разработчик у JavaScript плохому учился

Reading time6 min
Views16K


Недавно мне на глаза попалась одна статья на Хабре. В ней сравниваются C# и JavaScript. На мой взгляд, сравнивать их — всё равно что сравнивать луну и солнце, которые, если верить классику, не враждуют на небе. Эта статья напомнила мне о другой публикации. В ней речь идёт о сценариях неожиданного и неочевидного поведения JavaScript, а C# не упоминается от слова совсем, но живое любопытство сподвигло меня попытаться повторить подобное поведение на другом языке.
Читать дальше →
Total votes 55: ↑51 and ↓4+47
Comments43

Information

Rating
Does not participate
Registered
Activity