|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
02.04.2013, 09:34 | #1 |
Форумчанин
Регистрация: 04.01.2011
Сообщений: 260
|
как правильно создавать объекты в потоке?
Добрый день. есть код, который:
- создает поток TLoader - в потоке создает объекты TIdHTTP, TIdSSLIOHandlerSocketOpenSSL, TIdCompressorZLib, TMemoryStream (для загрузки страницы) можно создавать все эти объеты в конструкторе и уничтожать в деструкторе и использовать в загрузчике: Код:
Вопрос: правильно ли создавать объекты в конструкторе или надо перенести их создание в метод LoadURL , с точки зрения правильного кодирования Код:
|
02.04.2013, 12:54 | #2 |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,526
|
Так же как и в любом другом объекте никакой разницы.
главное 1. любой объект до использования должен быть создан. 2. для исключения утечек памяти любой созданный объект к моменту потери доступа к нему (к моменту разрушения внешнего объекта/ к моменту выхода из процедуры) должен быть разрушен. можно и не соблюдать если предполагается использование вне. пара Create Destroy позволяет программисту(не программе) лучше(удобнее) контролировать приведенные требования. и не загромождать основной код своих функций. Код:
любой блок операторов который требует своего пояснения как единого целого явлется кандидатом на выделения в отдельную функцию. с названием комментирующим (поясняющим) выполняемые действия. CreateMyObj; // создание внутренних объектов DestroyMyObj; //удаление внутренних объектов Если для этого уже предусмотрены функции Create; Destroy; то почему бы ими не воспользоваться. C т.з. "правильного" кодинга. (ЗА локальные объекты) Чем ниже область видимости тем лучше (высокая видимость)public ->protected->private ->Local variable (самая низкая видимость) Если объект создается,использутся и уничтожается исключительно в одной функции то он должен быть локальным.(Local variable) самая низкая видимость. function Tx.LoadHTML; var HTML: TIdHTML; ... begin выделение функций создания(разрущения) внутренних объектов приводит к облегчению кода, но требует перемещения объектов в новую область видимости (private) что повышает уровень видимости (доступности). Любая программа есть компромисс между скоростью написания, надежностью, читабельностью (восприятие кода человеком), простотой модификации (включая анализ кода), быстродействием и чем-то еще.
программа — запись алгоритма на языке понятном транслятору
Последний раз редактировалось evg_m; 02.04.2013 в 13:06. |
02.04.2013, 22:53 | #3 |
Форумчанин
Регистрация: 04.01.2011
Сообщений: 260
|
спасибо за разъяснение, будем пробовать
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как правильно из потока менять Переменные в другом потоке? | Pcrepair | Общие вопросы Delphi | 6 | 11.01.2013 11:22 |
Как правильно создавать и экспортировать файлы ASE ? | Vova777 | Gamedev - cоздание игр: Unity, OpenGL, DirectX | 0 | 05.05.2012 17:19 |
как правильно создавать запросы в Sql из Delphi 7 | MixanMM | БД в Delphi | 13 | 20.07.2010 13:29 |
Как лучше всего освобождать созданные в потоке объекты? | TwiX | Общие вопросы Delphi | 2 | 13.03.2010 21:27 |
Как правильно программно создавать объекты на форме | Format C: | Общие вопросы Delphi | 16 | 05.07.2007 09:08 |