Oberon space
General Category => Общий раздел => Тема начата: ilovb от Ноябрь 30, 2012, 07:55:38 pm
-
Периодически очень хочется иметь вложенные процедуры. Но в 1С их нет :(
Бывает получаются реально большие процедуры, с большим количеством переменных.
Если делать декомпозицию на обычных процедурах, то получаются слишком длинные списки параметров. Протаскивать структурами накладно. Вроде вложенные процедуры были бы идеальным вариантом.
Беседовал на эту тему с начальником однажды. Он считает что это зло. Типа локально глобальные переменные это те же замаскированные глобальные...
Что вы думаете на этот счет?
-
А модули в 1с - есть?
-
Есть
-
так используйте их для создания изолированного от основной части локального окружения...
-
не комильфо - но лучше чем ничего...
-
так используйте их для создания изолированного от основной части локального окружения...
Это отдельная песня. Оно вроде всё так, но есть одна особенность у модулей в 1С. Они привязаны к конфигурации. Т.е. в этом случае нельзя сделать независимую от конфигурации обработку.
-
Не понимаю проблемы...
-
А где вариант "нафига вложенные процедуры, если есть полноценные лямбда-функции?"?
-
А где вариант "нафига вложенные процедуры, если есть полноценные лямбда-функции?"?
так полноценность подразумевает в том числе и возможность их вложения... - которой нет
-
Не понимаю проблемы...
Я даже не отваживаюсь объяснить ;D
Долго объяснять человеку не работавшему с 1С.
-
Мы как-то экспериментировали - переписывали код на предмет избавления от вложенных процедур, замены обычных процедур на инлайн и т.п. По причине смены заказного железа на самое обычное и тут выяснилась одна неаприятность - в результате таких изменений производительность на новых машинах просела. Оказалось, что вложенные процедуры формируются как единое целое (в плане памяти), поэтому целиком помещается в кэше процессора, а самостоятельные могут находиться в разных участках, в результате происходит постоянная перезагрузка кэша (на новых машинах кэш был существенно меньше), что ведет к падению производительности, пришлось вернуть все обратно как было, но это, видимо, зависит от компилятора и железа и не факт, что на десктопе это будет как-то заметно.