Shadawn / A1-Export

Коллектив "А1" - экспортная библиотека для 1С
MIT License
69 stars 19 forks source link

Использование директив компиляции и инструкций препроцессора #1

Closed kuzyara closed 4 years ago

kuzyara commented 4 years ago

https://github.com/Shadawn/A1-Export/blob/b486592b1228981be9af63cd198d8a4cb5161c87/CommonModules/%D0%901%D0%AD_%D0%92%D0%BE%D1%80%D0%B4/Ext/Module.bsl#L3

  1. Не следует использовать инструкции препроцессора в клиент-серверных общих модулях для проверки клиентского и серверного контекстов (#Если Сервер, #Если Клиент) ввиду невозможности надежного определения контекста исполнения. Процедуры и функции, которые работают по-разному при вызове с клиента и с сервера, следует размещать в общих модулях с постфиксами Клиент и Сервер, а не КлиентСервер.

В противном случае невозможно гарантировать корректную работу клиент-серверных процедур и функций в различных режимах работы платформы 1С:Предприятие.

(с) ИТС https://its.1c.ru/db/v8std#content:439:hdoc

Shadawn commented 4 years ago

Про эту рекомендацию знаю. Фундаментально с ней не согласен. С моей точки зрения подобное разделение приводит к снижению эффективности работы с библиотекой. Например, я хочу вызвать функцию, работающую с массивами. В текущем варианте я очевидно иду в А1Э_Массивы. В варианте, предлагаемом 1С, мне нужно думать, находится ли эта функция в А1Э_МассивыКлиентСервер или А1Э_МассивыСервер (если я в серверном контексте).

Кроме того, разделение всех модулей на 3-4 части приведет к разрастанию дерева метаданных. Сейчас раскрытый список общих модулей более-менее помещается на экран. Если он увеличится в 4 раза, его потребуется долго скроллять (или пользоваться поиском, имеющим заметный лаг).

С моей точки зрения, эти два фактора перевешивают мистические потенциальные ошибки от фирмы 1С, которых я никогда не наблюдал (бывают интересные моменты с отладчиком, но это не ошибка функциональности). Если будет приведен воспроизводимый баг, связанный с этой ситуацией, я готов переосмыслить эту концепцию.

kuzyara commented 4 years ago

мощно задвинул))