Голосование

Как вы относитесь к вложенным процедурам

Жить без них не могу
Ниче так норм. Удобно
Пофиг
Вреда больше чем пользы
Это зло

Автор Тема: Вложенные процедуры  (Прочитано 4541 раз)

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Вложенные процедуры
« : Ноябрь 30, 2012, 07:55:38 pm »
Периодически очень хочется иметь вложенные процедуры. Но в 1С их нет  :(
Бывает получаются реально большие процедуры, с большим количеством переменных.
Если делать декомпозицию на обычных процедурах, то получаются слишком длинные списки параметров. Протаскивать структурами накладно. Вроде вложенные процедуры были бы идеальным вариантом.

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

Что вы думаете на этот счет?

DIzer

  • Гость
Re: Вложенные процедуры
« Ответ #1 : Ноябрь 30, 2012, 08:05:41 pm »
А модули в 1с - есть?

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: Вложенные процедуры
« Ответ #2 : Ноябрь 30, 2012, 08:07:38 pm »
Есть

DIzer

  • Гость
Re: Вложенные процедуры
« Ответ #3 : Ноябрь 30, 2012, 08:11:05 pm »
так используйте их для создания изолированного  от основной части локального окружения...

DIzer

  • Гость
Re: Вложенные процедуры
« Ответ #4 : Ноябрь 30, 2012, 08:13:30 pm »
не комильфо - но лучше чем ничего...

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: Вложенные процедуры
« Ответ #5 : Ноябрь 30, 2012, 08:17:50 pm »
так используйте их для создания изолированного  от основной части локального окружения...
Это отдельная песня. Оно вроде всё так, но есть одна особенность у модулей в 1С. Они привязаны к конфигурации. Т.е. в этом случае нельзя сделать независимую от конфигурации обработку.

DIzer

  • Гость
Re: Вложенные процедуры
« Ответ #6 : Ноябрь 30, 2012, 08:21:39 pm »
Не понимаю проблемы...

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Вложенные процедуры
« Ответ #7 : Ноябрь 30, 2012, 08:33:29 pm »
А где вариант "нафига вложенные процедуры, если есть полноценные лямбда-функции?"?
Y = λf.(λx.f (x x)) (λx.f (x x))

DIzer

  • Гость
Re: Вложенные процедуры
« Ответ #8 : Ноябрь 30, 2012, 08:43:53 pm »
А где вариант "нафига вложенные процедуры, если есть полноценные лямбда-функции?"?
так полноценность подразумевает в  том числе и возможность их   вложения... - которой нет

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: Вложенные процедуры
« Ответ #9 : Ноябрь 30, 2012, 08:59:51 pm »
Не понимаю проблемы...

Я даже не отваживаюсь объяснить  ;D
Долго объяснять человеку не работавшему с 1С.

Kemet

  • Hero Member
  • *****
  • Сообщений: 587
    • Просмотр профиля
Re: Вложенные процедуры
« Ответ #10 : Декабрь 01, 2012, 06:13:51 am »
Мы как-то экспериментировали - переписывали код на предмет избавления от вложенных процедур, замены обычных процедур на инлайн и т.п. По причине смены заказного железа на самое обычное и тут выяснилась одна неаприятность - в результате таких изменений производительность на новых машинах просела. Оказалось, что вложенные процедуры формируются как единое целое (в плане памяти), поэтому целиком помещается в кэше процессора, а самостоятельные могут находиться в разных участках, в результате происходит постоянная перезагрузка кэша (на новых машинах кэш был существенно меньше), что ведет к падению производительности, пришлось вернуть все обратно как было, но это, видимо, зависит от компилятора и железа и не факт, что на десктопе это будет как-то заметно.