| | | Написал
#см2016 #плюс1книга #ruby И так прочитал первую часть книги Ruby Metaprogramming 2.0 стр 120, но на англ + код. Книга заставила посмотреть изнутри как работает тот код который я пишу и использую. Рассмотрел приемы: 1) Around alias - позволяет вызывать оригинал переопределенного используя алиас на него 2) Blank Slate - удаляет методы из оббекта превращая его в призрачный метод, идея наследоваться от BasicObject 3) Class Extension - определения класса как примись к синглтон классу - с этим надо разбираться подробнее ибо затрагивает ruby очень глубоко - мне пока не хватает опыта осознать как это работает 4) Class instanse variable - вариант создания переменной класса, используя singleton method 5) Class Macro - использование class - как вариант определения класа, техника singletone class ов 6) Clean room - использовать обьект как окружение, в которое передается блок 7) Code Processor - использования когда который запускает код из строки - eval - и все вытекающие 8) Context Probe - пробиваем контекст с помощью instanse_eval и блоков - позволяет доставать private методы 9) Deferred Evaluation - прием позволяет хранить контекст и передавать его при помощи proc и lamda 10) Dinamic Dispatch - позволяет решать какой метод вызывать на этапе выполнения 11) Dynamic Method - позволяет создавать нужные методы на этапе выполнения программы 12) Dynamic Proxy - позволяет динамически перенаправлять вызов метода в другие обьекты 13) Flat scope - Позволяет расшаривать обьекты между двумя контекстами используя instance_eval 14) Ghost method - призрачные методы, используя method_mithing 15) Hook methods - переопределения методов перехватывая события обьектов 16) Kernel method - создание методов доступных у всех обьектов, за счет определения их в модуле ядра 17) Lazy Instance variable - не поддалось моему пониманию 18) Mimic method - не поддалось моему пониманию 19) Monkey Patch - переопределение методов 20) Namespace - ограничения одинаково названных методов и классов запихивая их в уникальное окружение 21) Object Extension - определение синглтон методов как примись в обьект синглтон класса 22) Open Class - прием позволяющий расширять поведение уже написанных классов 23) Prepending Wrap - создания оберток над методами - используя Singleton class и prepend 24) Refinement - расширения класса в определенном месте, используя миксины и refine 25) Refinement Wrapper - см 24 - прием когда используем вызов переопределенного метода или нового метода расширяющего класс 26) Sand box - изоляция кода в окружении при помощи lamda { здесь код который хотим изолировать }.call - позволяет аккуратно работать с глобальными переменными 27) Scope Gate - показывает изоляцию контекстов с помощью ключевых слов в ruby - class module def 28) Shared scope - позволяет шарить контексты - тут наши любимые lamda and proc
1я часть книги дала просто огромный набор инструментов и понимания как оно работает изнутри, 2я часть покажет как это используется в rails
| | | | Вернуться к записи на стену |
{"id":"52158","o":30} |