Oberon space

General Category => Общий раздел => Тема начата: ilovb от Ноябрь 30, 2012, 07:55:38 pm

Название: Вложенные процедуры
Отправлено: ilovb от Ноябрь 30, 2012, 07:55:38 pm
Периодически очень хочется иметь вложенные процедуры. Но в 1С их нет  :(
Бывает получаются реально большие процедуры, с большим количеством переменных.
Если делать декомпозицию на обычных процедурах, то получаются слишком длинные списки параметров. Протаскивать структурами накладно. Вроде вложенные процедуры были бы идеальным вариантом.

Беседовал на эту тему с начальником однажды. Он считает что это зло. Типа локально глобальные переменные это те же замаскированные глобальные...

Что вы думаете на этот счет?
Название: Re: Вложенные процедуры
Отправлено: DIzer от Ноябрь 30, 2012, 08:05:41 pm
А модули в 1с - есть?
Название: Re: Вложенные процедуры
Отправлено: ilovb от Ноябрь 30, 2012, 08:07:38 pm
Есть
Название: Re: Вложенные процедуры
Отправлено: DIzer от Ноябрь 30, 2012, 08:11:05 pm
так используйте их для создания изолированного  от основной части локального окружения...
Название: Re: Вложенные процедуры
Отправлено: DIzer от Ноябрь 30, 2012, 08:13:30 pm
не комильфо - но лучше чем ничего...
Название: Re: Вложенные процедуры
Отправлено: ilovb от Ноябрь 30, 2012, 08:17:50 pm
так используйте их для создания изолированного  от основной части локального окружения...
Это отдельная песня. Оно вроде всё так, но есть одна особенность у модулей в 1С. Они привязаны к конфигурации. Т.е. в этом случае нельзя сделать независимую от конфигурации обработку.
Название: Re: Вложенные процедуры
Отправлено: DIzer от Ноябрь 30, 2012, 08:21:39 pm
Не понимаю проблемы...
Название: Re: Вложенные процедуры
Отправлено: valexey_u от Ноябрь 30, 2012, 08:33:29 pm
А где вариант "нафига вложенные процедуры, если есть полноценные лямбда-функции?"?
Название: Re: Вложенные процедуры
Отправлено: DIzer от Ноябрь 30, 2012, 08:43:53 pm
А где вариант "нафига вложенные процедуры, если есть полноценные лямбда-функции?"?
так полноценность подразумевает в  том числе и возможность их   вложения... - которой нет
Название: Re: Вложенные процедуры
Отправлено: ilovb от Ноябрь 30, 2012, 08:59:51 pm
Не понимаю проблемы...

Я даже не отваживаюсь объяснить  ;D
Долго объяснять человеку не работавшему с 1С.
Название: Re: Вложенные процедуры
Отправлено: Kemet от Декабрь 01, 2012, 06:13:51 am
Мы как-то экспериментировали - переписывали код на предмет избавления от вложенных процедур, замены обычных процедур на инлайн и т.п. По причине смены заказного железа на самое обычное и тут выяснилась одна неаприятность - в результате таких изменений производительность на новых машинах просела. Оказалось, что вложенные процедуры формируются как единое целое (в плане памяти), поэтому целиком помещается в кэше процессора, а самостоятельные могут находиться в разных участках, в результате происходит постоянная перезагрузка кэша (на новых машинах кэш был существенно меньше), что ведет к падению производительности, пришлось вернуть все обратно как было, но это, видимо, зависит от компилятора и железа и не факт, что на десктопе это будет как-то заметно.