|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
02.12.2010, 19:52 | #1 |
Новичок
Джуниор
Регистрация: 27.10.2010
Сообщений: 2
|
Inline Method пример кода..?
Кто может дать пример рефакторинга кода с помощью Встраивание метода Inline Method...??
Пример кода небольшой до и после рефакторинга! |
02.12.2010, 21:36 | #2 |
Старожил
Регистрация: 22.05.2007
Сообщений: 9,065
|
Возьмите любой метод, скопируйте его тело в буфер обмена. Удалите теперь его из класса. А теперь на все возникающие ошибки компиляции замените вызов этого метода на код из буфера. Пользы от этого подхода я лично не вижу, разве что изначально кто-то всё подряд по методам разнёс и в итоге в классе миллион однострочных методов.
|
03.12.2010, 11:12 | #3 |
Software Engineer
Участник клуба
Регистрация: 07.04.2007
Сообщений: 1,618
|
Inline методы (да и просто функции) полезны в том случаи, если метод (функция) содержит не более двух-трех операторов и вызывается достаточно часто. При использовании inline функций не тратится время на передачу им аргументов, т.к. код функции подставляется компилятором в нужное место, но за счет этого увеличивает размер исполняемого файла программы.
Так же, замечу, что указание inline не является приказом для компилятора, т.е. он может не использовать функцию как inline, даже если вы его об этом попросите. Это зависит от конкретной реализации, например, некоторые компиляторы не делают функцию inline, если в ней используются циклы Пример использования inline функций и методом можно посмотреть в любой (нормальной) книге по C\C++
Мужество есть лишь у тех, кто ощутил сердцем страх, кто смотрит в пропасть, но смотрит с гордостью в глазах. (с) Ария
Последний раз редактировалось Blade; 03.12.2010 в 11:14. |
03.12.2010, 12:18 | #4 |
Старожил
Регистрация: 21.03.2009
Сообщений: 2,193
|
До:
Код:
Код:
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта Тема на форуме, посвященная ему же |
03.12.2010, 12:55 | #5 |
Старожил
Регистрация: 22.05.2007
Сообщений: 9,065
|
Blade, в данном случае имеется ввиду приём в рефакторинге, а не возможности языка С++ (тут всё правильно расписано). Хотя может автору это и нужно было и я неправильно понял
Гром, если я правильно понял товарища Masarr, то в приведённом Вами примере нужно поменять местами куски кода "До" и "После", т.к. в приёме рефакторинга "Inline Method" наоборот происходит избавление от отдострочных методов типа ZeroArray. |
03.12.2010, 13:55 | #6 |
Старожил
Регистрация: 21.03.2009
Сообщений: 2,193
|
pu4koff, судя по логике рефакторинга код в процессе должен сокращаться и упрощаться, поэтому по идее нужно как раз убирать ненужное дублирование кода в inline-функцию. Впрочем, это уж пуская ТС смотрит, в какую сторону ему надо.
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта Тема на форуме, посвященная ему же |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Пример кода для воспроизведения нот - частоты нот для 80-ти клавишного пианино | mutabor | Свободное общение | 8 | 09.01.2010 23:48 |
IdHTTP.Post(); method not allowed | rangel | Работа с сетью в Delphi | 3 | 01.11.2009 16:56 |
Method must have a return type????? | Bobrik | Помощь студентам | 5 | 18.05.2009 18:09 |
SMTP + SSL пример кода | dimonbest | Работа с сетью в Delphi | 8 | 15.08.2008 10:56 |