Игра за игрой: C# Q&A со Скоттом Алленом и Джоном Скитом


Play by Play-это формат Pluralsight, в котором знаменитым программистам предлагается работать над случайно назначенной задачей, предоставляя аудитории редкую возможность наблюдать за тем, как они работают и как они думают о достижении решения. В этом фильме снимаются Джон Скит и Скотт Аллен.

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

В этом недавнем дополнении Роб Конери, соучредитель Tekpub, объединил Джона Скита, автора серии C# in Depth, и Скотта Аллена, автора или соавтора нескольких книг по технологиям Microsoft. В некотором отступлении от обычного ориентированного на задачи формата этот сеанс, длящийся 1 час 15 минут, представляет собой вопросы и ответы по .NET и C# в частности.

Двум участникам были вручены тщательно отобранные вопросы Stackoverflow перед сессией, чтобы они могли обработать их самостоятельно и в свое время, а затем представить свои решения и пошаговые руководства на этой встрече, снятой на NDC{London} 2016.

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

Первый из пяти вопросов касался динамического LINQ и упорядочения результатов запроса в динамическом порядке:

Я нашел пример в примерах VS2008 для динамического LINQ, который позволяет использовать строку, подобную sql (например, OrderBy(«Name, Age DESC»)) для заказа. К сожалению, метод, включенный в него, работает только на IQueryable;. Есть ли способ получить эту функциональность на IEnumerable?

С LINQ вам нравятся типобезопасные запросы и, следовательно, проверка времени компиляции, в то время как с DLINQ вы можете динамически создавать запросы на лету, передавая простые строки вместо лямбда-выражений в методы расширения библиотеки. 

Проблема в том, что DLINQ работает с IQueryables, и рассматриваемая коллекция имела тип IEnuremable. Скотт и Джон представили свои решения, которые, как ни странно, были на одном пути: превратить коллекцию IEnumerable в запрашиваемую. Они следовали за рассуждениями, стоящими за этим, а также предоставляли такие идеи, как: 

«IEnumerable работает на вашей локальной машине, а не на сервере, который возвращает результаты по ходу работы»

 В следующей теме Форматы строк с целочисленными переменными имели подтему Код как код против кода как данных, в котором Джон Скит набрасывается на людей, не понимающих различия между данными, интерпретируемыми как код, и кодом, интерпретируемым как данные, потому что это незнание все еще делает атаки SQL-инъекций реальностью. Он продолжает, предполагая, что в ситуациях, когда эта интерпретация не ясна, лучше выдать ошибку, чем позволить ей превратиться во что-то плохое, отсюда важность обработки исключений. Напомнив Робу Конери, что существуют динамические языки, такие как Ruby, которые проглатывают ошибки, поэтому вам нужно «иметь хорошие тесты», Скит в саркастическом настроении добавляет «или компилятор», вызывая смех на панели! Не желая продолжать избиение динамических языков дальше, он положил этому конец словами «Я просто остановлюсь на этом». Юмор программистов!  

Затем Скотт продемонстрировал эту концепцию на примере делегатов функций, которые он преобразует в деревья выражений и наоборот.

Вопрос о строковых форматах с целочисленными переменными был забавным и оказался довольно сложной задачей для C#, что-то, что могло бы перефразировать вопрос в:

«Что нужно в C#, чтобы заполнить целое число переменным числом нулей, которые вводятся во время выполнения?»

Довольно легко для динамического языка, такого как Perl :

my $pad=’7′;print sprintf(«%0${pad}d»,1234);

но это бремя для статического языка, такого как C#, где вам приходится прибегать к форматированию строки форматирования!

Время окупаемости, от имени всего динамичного!

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

«Почему вы можете присвоить значение автоматизированному свойству, когда оно только для чтения (есть только геттер)?»

Самое интересное заключается в том, что, поскольку презентация не обрезана и не изучена, вы можете наблюдать забавные сцены, такие как Джон, пытающийся найти место возникновения ошибки во время компиляции, что-то, что напоминает нам, что он все-таки человек!

Имена свойств лямбда-выражений исследуют унарные выражения и выражения-члены и указывают, где C# 6 упрощает код. В заключительном разделе Бинарная совместимость обсуждается, как управлять версиями, вращаясь вокруг наследования, интерфейсов и связанных с ними тем. Он также раскрывает такие ошибки, как то, как переопределение метода может потенциально нарушить совместимость библиотек.

В целом, формат Pluralsight Play by Play оправдал ожидания. Наблюдение за тремя экспертами, имеющими непринужденную и неформальную беседу, в которой они решают проблемы и раскрывают свой рабочий процесс, обеспечивает как развлечения, так и возможности для обучения. Я бы отметил его основные моменты как минуту 9.40 на лямбда-разговоре и 7:30 на бинарной совместимости.

Самая последняя игра за игрой-Angular с машинописным текстом (начальный уровень) с Джоном Папой и Кристофером Мартином.

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

Дизайн приложений AngularJS со Скоттом Алленом и Дэном Валином

Этический взлом с Троем Хантом

Изучение AngularJS с Кеном Сенерелли и Джоном Папой

Администрирование SQL Server с помощью Pinal Dave

В настоящее время подписчики CodeSchool могут зарегистрироваться и попробовать платформу бесплатно в течение 30 дней. Или вы можете попробовать все содержимое Pluralsight с 10-дневной бесплатной пробной версией, но вы должны заранее предоставить свою платежную информацию.


Добавить комментарий