v8cs:structure-key-modification¶
Модификация ключа структуры вне функции-конструктора (structure-key-modification)¶
- Категория:
bsl
Если Структура создана функцией-конструктором, то изменение состава ключей структуры методами
Структура.Вставить("Ключ", ...); Структура.Удалить("Ключ"); Структура.Очистить();
может приводить к ошибкам из-за неопределенности состава данных.
Неправильно¶
Неправильно удалять все ключи структуры, удалять ключ или заменять ключ внешней структуры.
// @strict-types
Процедура Неправильно1() Экспорт
ТестоваяСтруктура = Конструктор();
ТестоваяСтруктура.Очистить();
ТестоваяСтруктура.Вставить("Ключ1", 10);
ТестоваяСтруктура.Удалить("Ключ2");
КонецПроцедуры
// Возвращаемое значение:
// Структура:
// * Ключ1 - Булево -
// * Ключ2 - Число -
Функция Конструктор() Экспорт
ТестоваяСтруктура = новый Структура("Ключ1, Ключ2", Истина, 10);
ТестоваяСтруктура.Вставить("Ключ2", 20);
Возврат ТестоваяСтруктура;
КонецФункции
Правильно¶
Обращаться к существующему ключу необходимо напрямую и устанавливать новое значение. Вместо удаления ключа необходимо устанавливать значение, которое представляет пустое или начальное значение.
// @strict-types
Процедура Правильно1() Экспорт
ТестоваяСтруктура = Конструктор();
ТестоваяСтруктура.Ключ1 = false;
ТестоваяСтруктура.Ключ2 = -1;
КонецПроцедуры
// Возвращаемое значение:
// Структура:
// * Ключ1 - Булево -
// * Ключ2 - Число -
Функция Конструктор() Экспорт
ТестоваяСтруктура = новый Структура("Ключ1, Ключ2", Истина, 10);
ТестоваяСтруктура.Вставить("Ключ2", 20);
Возврат ТестоваяСтруктура;
КонецФункции
См.¶
Соответствие стандартам¶
- #std693, п. 4.1: Использование объектов типа Структура — Пункт запрещает изменять структуру добавлением и удалением ключей после создания.
Источник диагностики¶
- Исходная статья
- Ревизия:
c8fe7932babf718c0ace3cf836a99d6a3b98d098 - Лицензия:
EPL-2.0