Рубрики
Без рубрики

Обучение программированию в реальном времени – 19 июня 2019 г.

Краткое изложение того, что я узнал в сегодняшнем прямом эфире по кодированию на https://twitch.tv/jitterted . С тегами todayilearned, java, tdd, livecoding.

Истории, Реализованные

Сегодня я завершил реализацию обработки блоков, огороженных кодом (окруженных тремя обратными метками), и “обычных” текстовых блоков. Различия между ними заключаются в том, что блок кода может содержать встроенные пустые строки, но обычный текст использует пустые строки для разделения блоков абзацев. Например, учитывая этот опросный текст:

Здесь строка 2 пуста, что означает, что первая строка представляет собой обычный текстовый абзац. Однако, хотя строка 8 пуста, она находится внутри блока кода, поэтому она остается всего на один блок до строки 11, где заканчивается кодовое ограждение. Тогда строка 12 является пустой за пределами блока кода, поэтому последние две строки (не разделенные пустой строкой) считаются третьим блоком (абзацем).

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

Содержимое внутри по-прежнему требует экранирования объекта

Поскольку одной из основных целей проекта Quizdown является простое включение кода Java в вопросы и варианты ответов, я должен иметь возможность показывать вещи внутри угловых скобок для обобщений, например, List . Обычно объекты внутри угловых скобок рассматриваются как HTML-теги, но я подумал, что если бы они были внутри тега , они были бы показаны как есть. На самом деле, документы Mozilla для pre говорят (курсив мой):

Элемент HTML представляет предварительно отформатированный текст, который должен быть представлен точно так, как написано в HTML-файле.

Это не совсем верно, так как угловые скобки все равно нужно экранировать, т.Е. < заменяется на < , > на > и т.д.

Так , , это означало, что я должен был выполнить экранирование сущности HTML для всего текста – но прежде чем я превратил любой Quizdown в HTML (страшное двойное кодирование).

Prism нужен <код> внутри для выделения

Я использую библиотеку Prism и CSS для подсветки синтаксиса фрагментов кода Java в тесте. Когда я закончил обработку блоков, огороженных кодом, которые я окружил символом , я не видел никакой подсветки синтаксиса. Оказывается, у Prism есть дополнительное требование, согласно которому любой код также должен находиться внутри элемента , чтобы он мог его выделить. Документы должны быть улучшены в этой (и некоторых других) областях, с лучшими примерами. Я рассмотрю возможность подачи запроса на удаление для этого.

Никаких изменений кода без сбоя теста

Несмотря на то, что я занимаюсь TDD уже много лет, у меня все еще вошло в привычку сначала исправлять код, а не тестировать. В качестве напоминания (для себя, если не для кого другого) правило таково:

Не меняйте код, если только это не делается для того, чтобы выполнить failing test pass (или лучше потерпеть неудачу).

С помощью fail better иногда неудачный тест является успешным , если он не прошел так, как прогнозировалось и желалось.

Обратные ссылки регулярных выражений

Я забыл упомянуть во вчерашнем “извлеченных уроках”, что wietlol (один из моих VIP-зрителей Twitch) научил меня использовать обратные ссылки, чтобы я всегда сопоставлял подчеркивания с подчеркиванием (например, _italic_ ) и звезды со звездами (например, ** жирный ** ), а не смесь (например, _oops * ). Примером регулярного выражения, использующего обратные ссылки, является:

([*_])(?<курсив>.*?)\1(?!\1)

что означает: сначала сопоставьте либо звездочку, либо подчеркивание, затем некоторый текст (с именованной группой захвата), а затем сопоставьте так же, как было сопоставлено заранее. Тот ?! в конце есть отрицательный взгляд поэтому, когда я делаю замену, я сопоставляю ее с самым правым персонажем. Чтобы увидеть, как это работает, может быть полезно посмотреть Quiz down test .

Хорошая ссылка на обратные ссылки (ха-ха-ха) находится здесь а заглянуть вперед можно здесь .

В Заключение

Как всегда, исходный код этого проекта можно найти на GitHub , и вы можете посмотреть мои прошлые трансляции на Twitch .

Настройтесь на мой следующий прямой эфир по кодированию: https://Twitch.tv/jitterted .

Оригинал: “https://dev.to/jitterted/live-coding-learnings-june-19-2019-3acn”