Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

процедура с параметром или функция


cross ©   (2011-02-11 15:12:00) 

В класс нужно добавить метод, который бы извлекал из zip-архива определенный xml-файл. Как будет грамотнее поступить, сделать процедуру с параметром-IXMLDOMDocument:

procedure extract_file_info(AArch: TZipForge; AInfo: IXMLDOMDocument);

или же функцию (тогда придется Result := CoDOMDocument.Create вносить в тело функции)

function extract_file_info(AArch: TZipForge): IXMLDOMDocument;


Leonid Troyanovsky   (2011-02-12 11:19:00) [1]


> И. Павел ©   (11.02.11 15:18) [1]

> нет смысла извращаться с передачей результата в аргументе.
>  Вот если бы было еще одно возвращаемое значение, например
> - успешно ли выполнилась функция, то можно было бы включить
> второе возвращаемое значение в аргумент.

В случае неуспешности предпочту получить исключение.

> И. Павел ©   (11.02.11 18:06) [4]

>  если возвращается один параметр - пишу функцию, несколько
> - процедуру, много или структурированные - функцию, возвращающую
> структуру.

Если ограничиться методами, то можно использовать правило:
если мы меняем что-то в объекте (объектах), то это д.б. процедура;
если мы запрашиваем к.л. информацию не изменяя состояния объекта,
то это д.б. функция.

В качестве примера можно взять геттеры и сеттеры.

--
Regards, LVT.


Игорь Шевченко   (2011-02-11 18:53:00) [2]


> В целях расширения кругозора мне было бы интересно узнать
> ваши доводы по этому вопросу


если функция возвращает интерфейс, то внутри она должна создать конкретный реализатор этого интерфейса (или еще какием-то образом его получить). А если интерфейс передается извне, то функция не зависит от его реализации.


clickmaker   (2011-02-11 18:15:00) [3]

> Как будет грамотнее поступить, сделать процедуру

я бы сделал функцию. Если AInfo всегда представляет собой один файл, и создается только при чтении.
Процедуру имеет смысл делать, если параметр может создаваться/инициализироваться вне ее, или туда что-то дописывается.


И. Павел   (2011-02-11 18:06:00) [4]


> Я бы сделал процедуру

В целях расширения кругозора мне было бы интересно узнать ваши доводы по этому вопросу. Как то обычно не задумываюсь: если возвращается один параметр - пишу функцию, несколько - процедуру, много или структурированные - функцию, возвращающую структуру.


Игорь Шевченко   (2011-02-11 16:36:00) [5]

Я бы сделал процедуру


И. Павел   (2011-02-11 15:19:00) [6]


> разница в производительности

Т. е. затраты времени на выполнение Create


И. Павел   (2011-02-11 15:18:00) [7]

ИМХО разница в производительности даже при большом числе вызовов extract_file_info будет незначительная, так что нет смысла извращаться с передачей результата в аргументе. Вот если бы было еще одно возвращаемое значение, например - успешно ли выполнилась функция, то можно было бы включить второе возвращаемое значение в аргумент.


Наверх

Титульная страница Поиск, карта сайта Написать письмо