http://www.cantorsys.com/2014/05/if-case.html
Интересное "наблюдение", я сам к "подобному" пришёл. Уже относительно давно.
Хотя про "быдлокод" - я на автора реально обижен...
http://habrahabr.ru/post/232955/#comment_7856841
Очень было бы кстати интересно на "небыдло" код посмотреть. Или дело лишь в "одном пробеле"? :-)
- ой! Это же - "быдлокод"...
Интересно.. Наверное вот это СУПЕР "быдло" код:
Или вот это:
А "бинарная сериализация" (http://programmingmindstream.blogspot.ru/2014/07/blog-post_16.html) это не "быдло" код?
А про "Оператор if как подмножество case" вот ("пару цитат"):
Интересное "наблюдение", я сам к "подобному" пришёл. Уже относительно давно.
Хотя про "быдлокод" - я на автора реально обижен...
http://habrahabr.ru/post/232955/#comment_7856841
Очень было бы кстати интересно на "небыдло" код посмотреть. Или дело лишь в "одном пробеле"? :-)
if Condition then ifBranch else elseBranch;
- ой! Это же - "быдлокод"...
Интересно.. Наверное вот это СУПЕР "быдло" код:
while *aDest++ = *aSource++ ;
Или вот это:
loop: MOVB (R0)+, (R1)+ BNE loop
А "бинарная сериализация" (http://programmingmindstream.blogspot.ru/2014/07/blog-post_16.html) это не "быдло" код?
А про "Оператор if как подмножество case" вот ("пару цитат"):
RULES "Строка пустая" ( "Закрыть кавычку, если была" "Надо переводить строку" ? "Перевести строку" "Вывести строку как есть" ) // "Строка пустая" "Строка начинается с" '//#UC END# *' ( "Вывести комментарий, котрый был в исходном файле" "Закрыть вложенные опеределения" // - т.к. наверное функция, трансформатор или генератор - закончились ) "Строка начинается с" '//' "Вывести комментарий, котрый был в исходном файле" "Строка начинается с" '/' ( "Надо переводить строку" ? "Перевести строку" "Добавить к строке / и вывести" ) // "Строка начинается с" '/' DEFAULT "Сигнализировать о неуспехе" ; // RULES ... RULES "Строка начинается с" 'n' ( WString:++! "Текущая строка входного файла" '#13#10' "Добавить спецстроку к накапливаемой строке" ) "Строка начинается с" 't' ( WString:++! "Текущая строка входного файла" '#9' "Добавить спецстроку к накапливаемой строке" ) DEFAULT "Выводим следующий символ как есть" ; // RULES ... RULES "Строка начинается с" '(' ( "Надо ли считать скобки" ? ( ( "Закрывающаяся скобка" %== ')' ) ? ( ++! "Число дополнительных открытых скобок" ) // ( "Закрывающаяся скобка" %== ')' ) ? ) // "Надо ли считать скобки" ? "Один проход разбора остатка без учёта его результата" ) // "Строка начинается с" '(' "Строка начинается с" "Знак процента" ( "Надо ли разбирать условие" IF // - тут экранируем условие "Вывести отступ" '( ' "Вывести строку" "Обработать строку начинающуюся с % как начало цепочки" ') ' "Вывести строку" ELSE "Обработать строку начинающуюся с % как начало цепочки" ENDIF // "Надо ли разбирать условие" ) // "Строка начинается с" "Знак процента" "Строка начинается с" "Закрывающаяся скобка" ( BOOLEAN VAR "Скобка подходит" true =: "Скобка подходит" //'скобка' log //"Закрывающаяся скобка" log "Надо ли считать скобки" IF ( "Число дополнительных открытых скобок" %== 0 ) =: "Скобка подходит" ELSE //'Двойная кавычка была открыта' log "Двойная кавычка была открыта" log "Надо ли считать кавычки" IF ( "Двойная кавычка была открыта" ! ) =: "Скобка подходит" ELSE true =: "Скобка подходит" ENDIF ENDIF //'Скобка подходит' log //"Скобка подходит" log "Скобка подходит" IF "Сбросить накопленную строку без перевода" WString:++! "Текущая строка входного файла" // - отрезаем скобку true =: "Встретилась закрывающаяся скобка" "Уменьшить количество открытых скобок параметров функции" ELSE "Надо ли считать скобки" ? ( --! "Число дополнительных открытых скобок" ) // "Надо ли считать скобки" ? "Один проход разбора остатка без учёта его результата" ENDIF ) // "Строка начинается с" "Закрывающаяся скобка" ( "Надо ли разбирать запятые" %&& "Строка начинается с" ',,' ) ( : "Пустой параметр" "Вывести значение для пустой строки" ; // "Пустой параметр" "Сбросить накопленную строку без перевода" 2 WString:+! "Текущая строка входного файла" // - отрезаем ',,' //"Вывести пробел" '%, ' "Вывести строку" // - выводим такую хитрую запятую, которая будет склеивать все параметры перед ней в один "Пустой параметр" ' %, ' "Вывести строку" // - выводим такую хитрую запятую, которая будет склеивать все параметры перед ней в один true =: "Следующее значение переменной Первый проход разбора параметра" ) // "Строка начинается с" ',,' ( "Надо ли разбирать запятые" %&& "Строка начинается с" "Запятая" ) ( "Сбросить накопленную строку без перевода" WString:++! "Текущая строка входного файла" // - отрезаем запятую //"Вывести пробел" '%, ' "Вывести строку" // - выводим такую хитрую запятую, которая будет склеивать все параметры перед ней в один true =: "Следующее значение переменной Первый проход разбора параметра" ) // "Строка начинается с" "Запятая" "Строка начинается с" '""' ( 2 WString:+! "Текущая строка входного файла" // - отрезаем две двойных кавычки "Вывести значение для пустой строки" "Вывести пробел" ) // "Строка начинается с" '""' "Строка начинается с" '"true"' ( 6 WString:+! "Текущая строка входного файла" // - отрезаем "true" 'true ' "Вывести строку" ) // "Строка начинается с" '"true"' "Строка начинается с" '"false"' ( 7 WString:+! "Текущая строка входного файла" // - отрезаем "false" 'false ' "Вывести строку" ) // "Строка начинается с" '"false"' "Строка начинается с" "Двойная кавычка" ( //'got' log //'Двойная кавычка была открыта' log "Двойная кавычка была открыта" log "Двойная кавычка была открыта" ! =: "Двойная кавычка была открыта" //'Двойная кавычка была открыта' log "Двойная кавычка была открыта" log "Накапливаемая строка пустая" IF WString:++! "Текущая строка входного файла" ELSE CHAR VAR "Следующий символ" ( 1 "Текущая строка входного файла" WString:[i] ) =: "Следующий символ" ( ( "Следующий символ" %== "Закрывающаяся скобка" ) %|| ( "Следующий символ" %== '=' ) %|| ( "Надо ли разбирать условие" %&& ( ( "Следующий символ" %== '|' ) %|| ( "Следующий символ" %== '&' ) ) ) ) IF "Сбросить накопленную строку без перевода" WString:++! "Текущая строка входного файла" ELSE //'got1' log "Один проход разбора остатка без учёта его результата" ENDIF ENDIF ) // "Строка начинается с" "Двойная кавычка" "Строка начинается с" 'true' ( "Надо ли разбирать булевские значения" %&& "Накапливаемая строка пустая" IF 4 WString:+! "Текущая строка входного файла" "Сбросить накопленную строку без перевода" "Вывести отступ" ' true ' "Вывести строку" ELSE "Один проход разбора остатка без учёта его результата" ENDIF // "Надо ли разбирать условие" ) // "Строка начинается с" 'true' "Строка начинается с" 'false' ( "Надо ли разбирать булевские значения" %&& "Накапливаемая строка пустая" IF 5 WString:+! "Текущая строка входного файла" "Сбросить накопленную строку без перевода" "Вывести отступ" ' false ' "Вывести строку" ELSE "Один проход разбора остатка без учёта его результата" ENDIF // "Надо ли разбирать условие" ) // "Строка начинается с" 'false' "Строка начинается с" '!=' ( "Надо ли разбирать условие" IF 2 WString:+! "Текущая строка входного файла" "Сбросить накопленную строку без перевода" "Вывести отступ" '%!= ' "Вывести строку" true =: "Следующее значение переменной Первый проход разбора параметра" ELSE "Один проход разбора остатка без учёта его результата" ENDIF // "Надо ли разбирать условие" ) // "Строка начинается с" '!=' "Строка начинается с" '=' ( //'got 3' log //"Закрывающаяся скобка" log "Надо ли разбирать условие" IF //'got 4' log WString:++! "Текущая строка входного файла" "Сбросить накопленную строку без перевода" "Вывести отступ" '%== ' "Вывести строку" true =: "Следующее значение переменной Первый проход разбора параметра" ELSE //'got 5' log //"Текущая строка входного файла" WString:[] log "Один проход разбора остатка без учёта его результата" //"Текущая строка входного файла" WString:[] log ENDIF // "Надо ли разбирать условие" ) // "Строка начинается с" '=' "Строка начинается с" '&' ( "Надо ли разбирать условие" IF WString:++! "Текущая строка входного файла" "Сбросить накопленную строку без перевода" "Вывести отступ" "Закрыть операторную скобку" '%&& ' "Вывести строку" "Открыть операторную скобку" true =: "Следующее значение переменной Первый проход разбора параметра" //"Перевести строку" ELSE "Один проход разбора остатка без учёта его результата" ENDIF // "Надо ли разбирать условие" ) // "Строка начинается с" '&' "Строка начинается с" '|' ( "Надо ли разбирать условие" IF WString:++! "Текущая строка входного файла" "Сбросить накопленную строку без перевода" "Вывести отступ" "Закрыть операторную скобку" '%|| ' "Вывести строку" "Открыть операторную скобку" true =: "Следующее значение переменной Первый проход разбора параметра" //"Перевести строку" ELSE "Один проход разбора остатка без учёта его результата" ENDIF // "Надо ли разбирать условие" ) // "Строка начинается с" '|' "Строка начинается с" '[' ( // "Накапливаемая строка пустая" ! ? // ( 0 =: "Число дополнительных открытых скобок" ) "Один проход разбора остатка без учёта его результата" ) // "Строка начинается с" '[' "Строка начинается с" '<' ( // "Накапливаемая строка пустая" ! ? // ( 0 =: "Число дополнительных открытых скобок" ) "Один проход разбора остатка без учёта его результата" ) // "Строка начинается с" '[' "Строка начинается с" ']' ( "Закрыть операторную скобку" "Обрабатываем END-IF" ! ? "Один проход разбора остатка без учёта его результата" ) // "Строка начинается с" ']' "Строка начинается с" '>' ( "Закрыть операторную скобку" "Обрабатываем конец цикла" ! ? "Один проход разбора остатка без учёта его результата" ) // "Строка начинается с" '>' ( "Накапливаемая строка пустая" %&& "Строка начинается с" '+1' ) ( 2 WString:+! "Текущая строка входного файла" // - отрезаем +1 "Вывести отступ" "Первый проход разбора параметра" IF '1 ' "Вывести строку" ELSE 'integer:?++ ' "Вывести строку" ENDIF ) // .. "Строка начинается с" '+1' ( "Накапливаемая строка пустая" %&& "Строка начинается с" '-1' ) ( 2 WString:+! "Текущая строка входного файла" // - отрезаем -1 "Вывести отступ" "Первый проход разбора параметра" IF '-1 ' "Вывести строку" ELSE 'integer:?-- ' "Вывести строку" ENDIF ) // .. "Строка начинается с" '+1' ( "Накапливаемая строка пустая" %&& "Строка начинается с" '1+' ) ( 2 WString:+! "Текущая строка входного файла" // - отрезаем 1+ "Вывести отступ" '1 %integer:?+ ' "Вывести строку" ) // .. "Строка начинается с" '1+' ( "Надо ли разбирать цифры" %&& "Накапливаемая строка пустая" %&& ( "Строка пустая" ! ) %&& ( "Цифры" "Текущая строка входного файла" WString:[] WString:HasAnyOf ) //"Строка начинается с" '1' ) ( WString:[]++! "Текущая строка входного файла" // - отрезаем 1 "Вывести отступ" "Выходной файл" file:WriteChar //'1 ' "Вывести строку" @ ( ( "Строка пустая" ! ) %&& ( "Цифры" "Текущая строка входного файла" WString:[] WString:HasAnyOf ) ) WHILE ( WString:[]++! "Текущая строка входного файла" // - отрезаем 1 "Выходной файл" file:WriteChar ) "Вывести пробел" ) // .. "Строка начинается с" '1' DEFAULT "Один проход разбора остатка без учёта его результата" ; // RULES ...
Для меня форматирование играет важную роль при чтении кода. Настолько сильно, что совсем неотформатированный код я уже воспринимаю как шум. Благо есть код-форматтер...
ОтветитьУдалитьНу и конечно, если код плохо отформатирован, нельзя утверждать что он "быдло". Просто у человека не выработался рефлекс.
Николай "плохо отформатирован" != "отформатирован не так как у меня". Ага? Ферштеен?
УдалитьТак это само собой, я даже об этом не спорю. Меня очень раздражает, когда форматирование "скачет", либо вовсе отсутствует, если так можно выразиться
ОтветитьУдалитьСогласен.
Удалить