Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.005 c
3-1259290992
Diplomat
2009-11-27 06:03
2011.05.22
Поиск заданного значения в БД


15-1297114175
Юрий
2011-02-08 00:29
2011.05.22
С днем рождения ! 8 февраля 2011 вторник


2-1297686311
Ghost del vonte
2011-02-14 15:25
2011.05.22
Определение Left и Top у ячейки в DrawGrid


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


1-1245744723
dmitry_12_08_73
2009-06-23 12:12
2011.05.22
Как выделить нужный файл в открываемой папке?




   Наверх