![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
процедура с параметром или функция
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 будет незначительная, так что нет смысла извращаться с передачей результата в аргументе. Вот если бы было еще одно возвращаемое значение, например - успешно ли выполнилась функция, то можно было бы включить второе возвращаемое значение в аргумент.