Python Indentation в Ruby
Lazibi
Есть такой интересный проект - Lazibi.
Предназначен для того, чтобы использовать в Ruby питоновские отступы.
Применяя эту штуку, можно позволить себе писать нечто такое:
class AuctionsController < ApplicationController
def index
@auctions = Auction.paginate :page => params[:page]
respond_to do |format|
format.html # index.rhtml
format.xml { render :xml => @auctions.to_xml }
Про end-ы можно забыть.
После использования Haml и Sass вообще кажется что так оно и должно быть всегда и никак иначе.
Это было бы действительно круто, если бы не одно НО: Вам предлагается писать свой код с питоновскими отступами в отдельной Meta-директории, из которой уже в свою очередь будет генериться обычный Ruby-код.
Почему это должно быть в Ruby и почему его там нет
Cколько я видел чужого кода на Руби, обычно ни у кого не возникает разногласий по поводу стилей программирования, которые бы приводили к составлению подобных портянок.
Базовый набор соглашений, принятых в Руби усваивается за полчаса и вопросов больше не вызывает: ну там отступ - два пробела, константы ПРОПИСНЫМ?_БУКВАМ?, классы ТакимВотОбразом, ну и переменные как_обычно.
Это я к чему клоню, что впринципе подавляющее большинство и так правильно/красиво расставляет отступы в коде, и если вдруг в одной из следующих версий Ruby закрытие блока с помощью end сделали бы опциональным (ну как сейчас return и скобки), то стало бы как минимум не хуже: старый код поддерживатеся, любители минимализма радуются - используют новый стиль - код становится еще более легким.
Все бы хорошо, да только Matz относится к этой идее довольно скептически и отправляет всех затейников программить на Питоне:
I am not positive for general block-by-indentation idea. If one
REALLY loves the idea, Python always waits for you.
? хотя без трудностей технического характера там тоже не обошлось - присутствуют неоднозначности в интерпретации блоков при использовании отступов и т.п., что-то мне подсказывает, что если бы Матцу идея приглянулась, все неодназначности бы быстренько разрулили :)
Что имеем:
В общем, для тех кому хочется странного (питоновских отступов в Руби), выходы пока такие:
- Плюнуть на это дело
- Использовать Lazibi в качестве дополнительной прослойки между окончательным кодом и руби-кодом-с-отступами
- Ждать чуда и верить, что кто-то таки приделает это в Ruby
- “Питон ждет вас” (c) Matz
- Ну и самое простое - написать свой форк Ruby, Open Source ведь как-никак :)
Комментариев: 2
Написать! | RSS | Trackback uri