В разделе «JavaScript и CSS» вы сказали, что с JS можно пойти дальше, применив «умные» оптимизации. Справедливости ради, стоит отметить, что и для CSS возможно пойти дальше, применив структурную оптимизацию,
и такой проект есть: ru.bem.info/tools/csso/. Эту штуку можно использовать как на чистом CSS, так и поставить (в деплой), после препроцессора (LESS, etc), который генерит достаточно многословный код.
Строка это iterable, конечно она распаковывается, чтож тут неочевидного. Это не шибко тянет на паттерн-матчинг, потому что вторую звёздочку мы уже не поставим, да и нельзя даже указывать макс. число символов в группу.
Подход, описанный в статье обладает сильным рациональным ядром, здоровым прагматизмом. Более того, я во многом ему следую. Но, тем не менее, по описанной шкале, я бы всё равно отнёс себя к джедаям. Я продолжаю экспериментировать с кодом, подходами, языковыми конструкциями, стилями. Почему? Прежде всего, я люблю языки, и выразительность, которую в них можно найти. Несомненно автор прав, что это поэзия. Но я считаю, что эта поэзия просто необходима для развития языков, выплавления новых идей и концепций.
Допустим, сит изучает новый язык программирования. Что он в первую очередь сделает (после изучения основ синтаксиса)? Прежде всего он почитает рекомендации по стандартам стиля написания на данном языке, идиомам данного языка и в своём коде постарается их придерживаться. Тем самым на данном этапе он уже оградил себя от возможности найти что-то новое.
Вероятно, тут нужно соблюдать баланс. В каком-нибудь toy-проджекте или «академической» либе, которую ты мейнтейнишь, можно нести добро, а в суровом продакшене переходить на тёмную сторону.
Всем DRY.
Шаблонизация это зачастую DOM, но не всегда. Шаблонизатор должен решать обобщённую задачу генерации строки по шаблону. Можно генерить SVG и прочие XMLи, можно генерить таблицы стилей, можно генерить вообще отчёты в текстовом файле. И всё это не конструируя DOM.
Покинуть блок можно по-разному. В вашем контр-примере строка будет выведена только при обычном выходе из цикла. Если я сделаю return внутри, то ваш контрпример не сработает. То есть он не аналогичен блоку LEAVE.
Вообще, попытки ввести такие блоки это попытка контролировать поток выполнения, в каком бы направлении он ни пошёл. Смысл в этом есть.
и такой проект есть: ru.bem.info/tools/csso/. Эту штуку можно использовать как на чистом CSS, так и поставить (в деплой), после препроцессора (LESS, etc), который генерит достаточно многословный код.
1 Костыль.
Допустим, сит изучает новый язык программирования. Что он в первую очередь сделает (после изучения основ синтаксиса)? Прежде всего он почитает рекомендации по стандартам стиля написания на данном языке, идиомам данного языка и в своём коде постарается их придерживаться. Тем самым на данном этапе он уже оградил себя от возможности найти что-то новое.
Вероятно, тут нужно соблюдать баланс. В каком-нибудь toy-проджекте или «академической» либе, которую ты мейнтейнишь, можно нести добро, а в суровом продакшене переходить на тёмную сторону.
Всем DRY.
github.com/StreetStrider/Beardy
Вообще, попытки ввести такие блоки это попытка контролировать поток выполнения, в каком бы направлении он ни пошёл. Смысл в этом есть.
Учитывая, что она всегда была в JS.