![]() |
|
|
![]()
|
|
| altarasjuk |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 331 Регистрация: 7.5.2003 Где: Харьков Репутация: нет Всего: 1 |
Господа Админы
Давайте создадим форум по вопросам рефакторинга. А то как-то мне кажется, что многие об этом не знают -------------------- Правда - изобретение маньяков: колет глаза и режет уши. |
|||
|
||||
| HalkaR |
|
|||
![]() Пуфыстый назгул ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2132 Регистрация: 8.12.2002 Где: В Москве Репутация: нет Всего: 42 |
А что это?
|
|||
|
||||
| altarasjuk |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 331 Регистрация: 7.5.2003 Где: Харьков Репутация: нет Всего: 1 |
Рефакторинг - это процес улучшения существующего кода ("наведения порядка в коде").
Оновние задачи рефакторинга: 1. Оптимизация (не по скорости, а по понятности) кода для более лёгкого дальнейшего расширения. 2. Повторное использование кода. 3. Инкапсуляция особого поведения классов в подклассы. 4. Саме главное - отделение визуальной части от функциональности. т.е. всё что есть на форме - создано ТОЛЬКО для того, чтобы "на него сотреть" и не должно нести за собой НИКАКОЙ функциональности. и т.п. самый простейший например (с вашего позволения буду использовать синтаксис Java): Начальный файл
Теперь если нам потребуется изменить что-то, добавить новый тип и т.п. - это будет очень сложно. Проведём рефакторинг: 1. Переместим вычисление стоимости в подклассы (создадим их) и заменяем конструктор фабрчным методом:
Вроде как ничего в поведении не поменялось. Однако есть некоторые преймущества перед старым кодом: 1. Если нам понадобится где-то ещё вычислить стоимость, то не потребуется switch. 2. На всю работу с классами Movie у нас всего один switch. А это уж поверь - очень большой плюс. 3. Всё особое поведение инкапсулировано в отдельные подклассы, следовательно если добавиться ещё один тип, то надо изменить всего один switch и написать соответсвующий подкласс. На самом деле это очень простой пример, на котором не возможно понять выгоды проделанного. Для того чтобы понять выгоду, нужно разобрать очень большой пример. И рефакторинги, которые при этом осущиствляются - очень сложные. Этот пример просто не может отразить полной сути. В принципе, полиморфизм - общеизвестный факт. Тут нет ничего нового. Важно научиться его правильно использовать. К примеру у кого не разу не было такого, чтобы свой объект наследовался от како-го либо другого, при этом он использовалось всего несколько методов родительского объёкта. Для этого надо выполнять замену наследования делегирование. И ситуации наоборот, что свой объект представляет собой только делегирующие методы, тогда нужно выполнять обратную операцию. Вооооообщем всё так не опишешь, можно только запутать.... Ну я думаю все смысл поймали. По этому поводу я могу посоветовать книгу (это не реклама, просто книга действительно очень хорошая Ещё в тему есть понятие шаблонов проектирования. Тоже близкое по своему назначению. Это сообщение отредактировал(а) altarasjuk - 20.7.2003, 14:00 -------------------- Правда - изобретение маньяков: колет глаза и режет уши. |
||||
|
|||||
| Step |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5151 Регистрация: 26.9.2002 Где: дурдом.UA Репутация: 2 Всего: 25 |
это излишне....
-------------------- - Дурак учится на своих ошибках, умный на чужих. - умные учатся у дураков |
|||
|
||||
| altarasjuk |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 331 Регистрация: 7.5.2003 Где: Харьков Репутация: нет Всего: 1 |
ты вот как и многие не понимаешь ценность всего этого, чтобы понять нужен именно очень большой пример, который здесь не поместиться. А правильно проведенный рефакторинг - залог успеха
-------------------- Правда - изобретение маньяков: колет глаза и режет уши. |
|||
|
||||
| Step |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5151 Регистрация: 26.9.2002 Где: дурдом.UA Репутация: 2 Всего: 25 |
altarasjuk да я не имею не чего против, но просто подумай как много людей будут заходить в этот раздел, он просто вымрет....
-------------------- - Дурак учится на своих ошибках, умный на чужих. - умные учатся у дураков |
|||
|
||||
| Wowa |
|
|||
|
Эксперт Профиль Группа: Админ Сообщений: 15017 Регистрация: 14.9.2000 Где: Винград Репутация: 79 Всего: 290 |
Step прав..... Хотя идея бесспорно очень интересна!
Возможно имело бы смысл сделать что-типа какой-то рубрики в нашей рассылки или может регулярно писать статьи на эту тему и публиковать на форуме. |
|||
|
||||
| altarasjuk |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 331 Регистрация: 7.5.2003 Где: Харьков Репутация: нет Всего: 1 |
Admin, ну на счёт вымрет - не вымрет, не знаю, но то что о рефакторинге и вообще о правилах написания программ никто не знает (сужу по разделу Delphi). Уж в самой Делфе так повелось, что.... ну не умеют люди отделить интерфейс от реализации
-------------------- Правда - изобретение маньяков: колет глаза и режет уши. |
|||
|
||||
| DENNN |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3878 Регистрация: 27.3.2002 Где: Москва Репутация: 1 Всего: 43 |
Идея очень интересная, мне нравиться. Но вот чем заполнять такой раздел я совершенно не представляю.
Публиковать большие объемы кода (иначе какой рефакторинг?), а потом вместе обсуждать что получиться: боюсь у нас опять будет на флейм похоже. Может сделать иначе: тема рефакторинг и грамотное написание кода, но по смыслу создание OpenSource? Скажем разрабатывается несколько проектов, постоянно висит последняя редакция кода, каждый может взглянуть, обсудить и предложить что-то свое (или преслать новый кусок кода). А админы и ответственные товарищи хороший кусок кода добавляют в разрабатываемый проект. Заодно и проблемы написания переносимого кода обсудим. Этакая технология написания Linux - каждый может сделать то, что у него хорошо получается. Я думаю если найти интересные задачи и не очень сложные, то обсуждение будет вестись. Тем более что при такой работе советы наших профессионалов будут особенно полезны и наглядны. Как такая идея? |
|||
|
||||
| DENNN |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3878 Регистрация: 27.3.2002 Где: Москва Репутация: 1 Всего: 43 |
А раздел "статьи" уже работает?
|
|||
|
||||
| podval |
|
|||
![]() Где я? Кто я? ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3094 Регистрация: 25.3.2002 Где: СПб Репутация: 2 Всего: 62 |
altarasjuk
Можешь начать постить о рефакторинге в раздел "Технологии и алгоритмы", ибо считаю, что рефакторинг - технология, достойная того, чтобы о ней знали. Если тебе много есть, чего сказать, то сделаем тему, куда ты будешь постить свои мысли, а обсуждение можно забить в соседнюю тему. |
|||
|
||||
| Step |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5151 Регистрация: 26.9.2002 Где: дурдом.UA Репутация: 2 Всего: 25 |
-------------------- - Дурак учится на своих ошибках, умный на чужих. - умные учатся у дураков |
|||
|
||||
| altarasjuk |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 331 Регистрация: 7.5.2003 Где: Харьков Репутация: нет Всего: 1 |
Это сообщение отредактировал(а) altarasjuk - 22.7.2003, 23:44 -------------------- Правда - изобретение маньяков: колет глаза и режет уши. |
|||
|
||||
| podval |
|
|||
![]() Где я? Кто я? ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3094 Регистрация: 25.3.2002 Где: СПб Репутация: 2 Всего: 62 |
altarasjuk
Тогда тебе прямой путь в "Технологии и алгоритмы". Прежде чем открывать новый форум, твою тему надо бы обкатать. Поэтому периодически там публикуй. При надобности тему закрепим сверху. |
|||
|
||||
| altarasjuk |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 331 Регистрация: 7.5.2003 Где: Харьков Репутация: нет Всего: 1 |
podval, я завтра еду в отпуск на неделю, как раз за это время чё-то напишу, и в понедельник или вторник - опубликую. Я думаю начать с самого больного вопроса - разделение реализации и интерфейса.
-------------------- Правда - изобретение маньяков: колет глаза и режет уши. |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Обсуждение форума | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |