Текущий архив: 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