#std693¶
Использование объектов типа Структура¶
Требования направлены на читаемость кода и удобство сопровождения. Читабельный код снижает риск ошибок и упрощает работу команды.
1.¶
Не передавайте в конструктор структуры более 3 значений.
Для остальных значений используйте Вставить или присваивание свойствам.
Неправильно
ПараметрыФормыКомпоновки = Новый Структура(
"НеПомещатьНастройкиВСхемуКомпоновкиДанных,
|НеРедактироватьСхемуКомпоновкиДанных,
|НеНастраиватьУсловноеОформление,
|НеНастраиватьВыбор,
|НеНастраиватьПорядок,
|АдресСхемыКомпоновкиДанных,
|АдресНастроекКомпоновкиДанных,
|УникальныйИдентификатор,
|Заголовок",
Истина,
Истина,
Истина,
Истина,
Истина,
ТекущиеДанные.АдресСхемыКомпоновкиДанных,
?(АдресНастроекСхемыКомпоновкиДанных <> Неопределено,
АдресНастроекСхемыКомпоновкиДанных,
ТекущиеДанные.АдресНастроекСхемыКомпоновкиДанных),
УникальныйИдентификатор,
ЗаголовокФормыНастройкиСхемыКомпоновкиДанных);
Правильно
ПараметрыФормыКомпоновки = Новый Структура;
ПараметрыФормыКомпоновки.Вставить("НеПомещатьНастройкиВСхемуКомпоновкиДанных", Истина);
ПараметрыФормыКомпоновки.Вставить("НеРедактироватьСхемуКомпоновкиДанных", Истина);
ПараметрыФормыКомпоновки.Вставить("НеНастраиватьУсловноеОформление", Истина);
ПараметрыФормыКомпоновки.Вставить("НеНастраиватьВыбор", Истина);
ПараметрыФормыКомпоновки.Вставить("НеНастраиватьПорядок", Истина);
ПараметрыФормыКомпоновки.Вставить("АдресСхемыКомпоновкиДанных", ТекущиеДанные.АдресСхемыКомпоновкиДанных);
ПараметрыФормыКомпоновки.Вставить("АдресНастроекКомпоновкиДанных",
?(АдресНастроекСхемыКомпоновкиДанных <> Неопределено,
АдресНастроекСхемыКомпоновкиДанных,
ТекущиеДанные.АдресНастроекСхемыКомпоновкиДанных));
ПараметрыФормыКомпоновки.Вставить("УникальныйИдентификатор", УникальныйИдентификатор);
ПараметрыФормыКомпоновки.Вставить("Заголовок", ЗаголовокФормыНастройкиСхемыКомпоновкиДанных);
2.¶
Не используйте в конструкторе структуры конструкторы других объектов, если они принимают параметры. Особенно избегайте вложенных структур с заполнением свойств.
Неправильно
НоменклатураСервер.ЗаполнитьСлужебныеРеквизитыПоНоменклатуреВКоллекции(
Объект.Товары,
Новый Структура(
"ЗаполнитьПризнакХарактеристикиИспользуются,
|ЗаполнитьПризнакТипНоменклатуры,
|ЗаполнитьПризнакВариантОформленияПродажи",
Новый Структура("Номенклатура", "ХарактеристикиИспользуются"),
Новый Структура("Номенклатура", "ТипНоменклатуры"),
Новый Структура("Номенклатура", "ВариантОформленияПродажи")
)
);
Правильно
ПараметрыЗаполненияРеквизитов = Новый Структура;
ПараметрыЗаполненияРеквизитов.Вставить("ЗаполнитьПризнакХарактеристикиИспользуются",
Новый Структура("Номенклатура", "ХарактеристикиИспользуются"));
ПараметрыЗаполненияРеквизитов.Вставить("ЗаполнитьПризнакТипНоменклатуры",
Новый Структура("Номенклатура", "ТипНоменклатуры"));
ПараметрыЗаполненияРеквизитов.Вставить("ЗаполнитьПризнакВариантОформленияПродажи",
Новый Структура("Номенклатура", "ВариантОформленияПродажи"));
НоменклатураСервер.ЗаполнитьСлужебныеРеквизитыПоНоменклатуреВКоллекции(
Объект.Товары,
ПараметрыЗаполненияРеквизитов);
3.¶
Не вызывайте в конструкторе структуры функции с большим числом параметров (более 3).
Неправильно
СведенияОТоваре = Новый Структура("ПараметрыТовара, ЦенаПродажиИОстаткиТовара, ЦенаЗакупкиИОстаткиТовара",
ПодборТоваровКлиентСервер.ПараметрыТовара(),
ПодборТоваровВызовСервера.ЦенаПродажиИОстаткиТовара(
Номенклатура,
Характеристика,
Соглашение,
Валюта,
ВидыЦен),
ПодборТоваровВызовСервера.ЦенаЗакупкиИОстаткиТовара(
Номенклатура,
Характеристика,
Соглашение,
Валюта,
ВидыЦен));
Правильно
СведенияОТоваре = Новый Структура("ПараметрыТовара, ЦенаПродажиИОстаткиТовара, ЦенаЗакупкиИОстаткиТовара");
СведенияОТоваре.ПараметрыТовара = ПодборТоваровКлиентСервер.ПараметрыТовара();
СведенияОТоваре.ЦенаПродажиИОстаткиТовара = ПодборТоваровВызовСервера.ЦенаПродажиИОстаткиТовара(
Номенклатура,
Характеристика,
Соглашение,
Валюта,
ВидыЦен);
СведенияОТоваре.ЦенаЗакупкиИОстаткиТовара = ПодборТоваровВызовСервера.ЦенаЗакупкиИОстаткиТовара(
Номенклатура,
Характеристика,
Соглашение,
Валюта,
ВидыЦен);
4.1.¶
Не добавляйте свойства структуры в разных местах кода с последующей проверкой их наличия. Создавайте структуру со значениями по умолчанию сразу.
Неправильно
Правильно
4.2.¶
Исключение — структуры с нефиксированным форматом:
- структуры из внешних источников (HTTP-ответ, данные сканера штрихкодов, терминала сбора данных);
- системные параметры формы, параметры выбора в параметрах формы;
Пользовательские параметры формы, объявленные на закладке «Параметры» редактора формы.