Содержимое удалено Содержимое добавлено
Нет описания правки
Строка 11:
== Высокоуровневое программирование ==
Вот некоторые принципы программирования, которых должен придерживаться высокоуровневый программист:
* отсутствие глобальных переменных (чем меньше переменных, тем меньше ошибок);
* отсутствие циклов (все циклы должны быть заменены на итераторы);
* отстутствие условных конструкций if, case и т.д. (если они есть, то вы делаете, что-то не так);
* должны выполняться правила рефакторинга (код должен "хорошо пахнуть").
 
=== Отсутствие переменных ===
Если переменные отсутствуют, то что-то же использовать вместо них? Параметры методов/замыканий и константы. Это значит, что строка вида:
a += 5
 
является скорее всего ошибочной. Скорее всего суммирование можно перенести на момент присваивания начального значения. Поэтому выражение:
 
b = a + 5
 
является более правильным с точки зрения высокоуровневого программирования, т.к. b выступает в качестве константы.
 
=== Отсутствие условных конструкций if, case и т.д. ===
МногиеОказывается, изчто этихусловные принциповоператоры кажутсявовсе дикими.не Например, отсутствие условных операторовобязательны. Но давайтеДавайте рассмотрим несколько приемов, которые позволяют их избежать. Допустим у нас есть программа вида:
 
a, b = 5, 6
Строка 31 ⟶ 42 :
["a == b","a > b","a < b"]
 
Ии использовать оператор '''<=>''' для получения индекса варианта. Решение для вышеуказанного примера будет выглядеть так:
 
a, b = 5, 6
puts ["a == b","a > b","a < b"][ a <=> b ]
 
Естественно, что пример был выбран искусственно, но сама по себе идея достаточно интересна. Кстати, как написать программу, которая выводит "a == b" или "a != b"?