![]() |
|
Модераторы: Snowy, MetalFan, bems, Poseidon |
![]()
|
|
| RYB |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 72 Регистрация: 17.1.2007 Репутация: нет Всего: нет |
Пишу некоторый класс, который очень разросся: больше 1000 строчек.
Хотелось бы некоторые его методы записать в другой юнит. Подскажите пожайлуста как это реализвать. Это сообщение отредактировал(а) RYB - 21.1.2008, 14:28 |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 34 Всего: 459 |
Ну на 1000 можно еще потерпеть, если знать волшебные клавиши ctrl + shift + вверх/вниз . Труднее после 2000 строк. А вообще, классы лучше делать более узкоспециализированными, так будет проще отлаживать и вспоминать чего там к чему, потому что огромный класс это уже не ООП, а процедурное программирование, где все процедуры запихнули в класс -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| Felan |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 284 Регистрация: 2.8.2007 Где: Самара Репутация: 2 Всего: 7 |
Делать инклюды - имхо извращение.
НАчиная с 2006, кажется, в Turbe точно есть, появились т.н. класс-хелперы. Немного не та идея в основе лежит, но суть можно для разбития использовать. А вообще-то размер модуля имеет малое значение, если знать упомянутые волшебные кнопки... Хотя конечно лучше как-то по другому проектировать -------------------- // Любая сложная система - это темный лес. Каждый в этом лесу протаптывает свои тропинки, по ним и бегает. Лишь изредка, сходя с них, мы находим много интересного, а порою и страшного. |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 34 Всего: 459 |
Есть, но у таких хелперов очень серьезные ограничения. Там можно добавлять только методы, притом не виртуальные. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| Felan |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 284 Регистрация: 2.8.2007 Где: Самара Репутация: 2 Всего: 7 |
Ааа, ну может быть. Я в подробностях не разбирался...
Ну тогда только инклюды остаются... Как C# partial классов в Делфи нет. Хотя, я честно говоря, и не могу придумать, зачем они нужны... Если бы автор сказал, зачем ему это надо, может чего другое посоветовал бы... Это сообщение отредактировал(а) Felan - 21.1.2008, 17:05 -------------------- // Любая сложная система - это темный лес. Каждый в этом лесу протаптывает свои тропинки, по ним и бегает. Лишь изредка, сходя с них, мы находим много интересного, а порою и страшного. |
|||
|
||||
| Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 31 Всего: 484 |
Если уж очень хочется разбить на несколько модулей, то юзаем элементарное наследование.
В одном модуле часть реализовали, в другом пронаследовали, дописали методы, в третьем пронаследовали второй, ещё дописали... И т.д., пока не надоест. |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 34 Всего: 459 |
А по современным тенденциям принято использовать даже не наследование, а композицию. т.е. разделять один универсальный объект на группу специализированных объектов. Есть объект контейнер, который владеет группой объектов. Вот эта группа объектов и производит главное действие. Такой подход более гибок и эффективен.
Посмотрите например как реализован объект TImage, memo, даже TBitmap. Композиция объектов позволяет решать различные задачи не влезая в реализацию объекта. Даже такое "мягкое" влезание, как наследование может угробить стабильно работавшего предка. Намного безопаснее изменить маленький объект решающий узкую функцию, чем монстра у которого один метод может вызываться в десятках различных случаев. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
![]()
|
| Правила форума "Delphi: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |