Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2011.05.22;
Скачать: CL | DM;

Вниз

процедура с параметром или функция   Найти похожие ветки 

 
cross   (2011-02-11 15:12) [0]

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

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

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

function extract_file_info(AArch: TZipForge): IXMLDOMDocument;


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

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


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


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

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


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

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


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


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

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


 
clickmaker ©   (2011-02-11 18:15) [5]

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

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


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


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


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


 
Leonid Troyanovsky ©   (2011-02-12 11:19) [7]


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

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

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

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

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

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

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

--
Regards, LVT.



Страницы: 1 вся ветка

Текущий архив: 2011.05.22;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.008 c
6-1237314496
ID_23587A5E
2009-03-17 21:28
2011.05.22
Unit WinInet , проблема с InternetCloseHandle


1-1248264361
Enlight
2009-07-22 16:06
2011.05.22
Иконка на таскбаре для каждой формы приложения


8-1212054041
Дмитрий Белькевич
2008-05-29 13:40
2011.05.22
Упаковка avi


2-1297847287
RWolf
2011-02-16 12:08
2011.05.22
AV в API callback


2-1297692086
Stringgrid
2011-02-14 17:01
2011.05.22
drag&drop в stringgrid