Що ви думаєте про цю тему?
Метапрограмування найчастіше асоціюється з нединамічними мовами, оскільки там важче досягти певної поведінки (наприклад, впровадження ORM) без безлічі непродуктивних та неінтелектуальних ліній коду.
Але навіть у більш динамічних мовах, таких як PHP, генерування коду може бути дійсно безпечним та збільшувати продуктивність у величезній кількості. У сучасних рамках дуже часто зустрічаються риштування, які створюють більшу частину загальної моделі, форми, тесту та дій для певного бізнес-об'єкта, про який ви заявляєте. Це одна з причин того, що такі рамки, як symfony або RoR, мають такий великий успіх, ці засоби генерації коду дуже швидко узгоджують код і підвищують продуктивність програмістів.
На веб-сайтах більша частина взаємодії обертається навколо чотирьох основних дій:
- Створіть елемент
- Отримайте набір елементів (з можливою фільтрацією)
- Оновіть елемент новими атрибутами
- Видаліть набір елементів
Принаймні, все, що обертається навколо цих 4 основних дій, могло б і IMHO ДОБРЕ досягти, використовуючи засоби генерації коду для досягнення максимальної продуктивності.
У моїй компанії ми використовуємо symfony, а його адміністратор-генератор - винятковий інструмент, який навіть генерує код під час виконання (і кешує його), а це означає, що нам навіть не потрібно використовувати якісь завдання чи зовнішній інструмент для генерувати новий код, нам просто потрібно очистити кеш. Я настійно раджу використовувати цей інструмент для операцій з CRUD.
Але зробити те, що зробили чудові учасники символіки, завдання не з легких. Я реалізував кілька завдань з генерації коду самостійно, і робити щось дійсно послідовно та з широкою реалізацією для покриття більшості випадків справи непросто.
Це щось, що дійсно підвищить вашу продуктивність?
Я вважаю, що метапрограмування є дуже важливим у нижчих рівнях роботи (фреймворки, кешування, компілятори тощо), але те, до чого ми повинні підходити з особливою обережністю, якщо ми робимо справи на бізнес-рівні.
Використання генерації коду без всякого питання є головним підвищенням продуктивності. Реалізація власних інструментів генерації коду - не так багато, якщо ви самі не будуєте рамки.
Які є хороші ресурси з цього приводу, серед книг, блогів, слайд-шоу тощо?
Найкращий ресурс для розуміння програмування - це завжди добре та добре прокоментований вихідний код. Я б сказав, що вивчити генератори адміністрування RubyOnRails та Symfony - це гарна ідея.