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
...
Для меня форматирование играет важную роль при чтении кода. Настолько сильно, что совсем неотформатированный код я уже воспринимаю как шум. Благо есть код-форматтер...
ОтветитьУдалитьНу и конечно, если код плохо отформатирован, нельзя утверждать что он "быдло". Просто у человека не выработался рефлекс.
Николай "плохо отформатирован" != "отформатирован не так как у меня". Ага? Ферштеен?
УдалитьТак это само собой, я даже об этом не спорю. Меня очень раздражает, когда форматирование "скачет", либо вовсе отсутствует, если так можно выразиться
ОтветитьУдалитьСогласен.
Удалить