Главная страница
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.01 c
15-1296656605
Shirson
2011-02-02 17:23
2011.05.22
Absolute Database


1-1254906944
Aleks
2009-10-07 13:15
2011.05.22
Как вычислить матем.значение в Edit?


15-1296655266
Инна
2011-02-02 17:01
2011.05.22
помощь в создании информационной базы


15-1296995151
SummerWind
2011-02-06 15:25
2011.05.22
getObject - Баг или фича?


15-1296815616
И. Павел
2011-02-04 13:33
2011.05.22
Хочу грамотную распальцовку