beerdy
@beerdy
https://vk.com/beerdy

Имеется мнение, что метапрограммирование не имеет место быть в веб проектах. Так ли это?

Собственно вопрос в шапке. Если это так, то для чего оно нужно? И как оно способно повлиять на высоконагруженный проект? Если скорость, именно интерпретации (не разработки), упадет то на сколько в процентах, если бы реализация была без него? Будет ли падение скорости существенным фактом, чтобы не использовать метапрограммирование? Может у кого есть реальный опыт сравнения всех за и против?
  • Вопрос задан
  • 278 просмотров
Пригласить эксперта
Ответы на вопрос 2
Freika
@Freika
Senior Ruby on Rails developer
Это не так. Метапрограммирование, как и везде, служит в вебе для уменьшения количества кода. Скорость зависит в большей степени от кода, чем от языка (как и всегда в интерпретируемых). Работал в команде, где было около 10 проектов с применением метапрограммирования, все работало как часы.
Ответ написан
Комментировать
@CorbenDallass
Метапрограммирование как и может помочь структурировать код, и увеличить производительность. Допустим, у вас есть модуль (консерн), добавляющий некоторую функциональность для разных объектов. Назовем их объектами и субъектами.
В одном классе может быть
include MyModule
act_as_object


В другом
include MyModule
act_as_subject


В методах act_as_object и act_as_subject уже создаем нужные наборы методов
module MyModule
  def act_as_object
    define_method :obj_meth_1 do; end
    define_method :obj_meth_2 do; end
  end
  def act_as_subject
    define_method :subj_meth_1 do; end
    define_method :subj_meth_2 do; end
  end
end


Таким образом нужная для разных моделей функциональность собирается в одном месте, а при подключении модуля можно выбирать, какие конкретно методы в них добавлять.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы