Open artbear opened 3 years ago
Найти - депрекейтед.
Периодически встречаю
Если СтрНайти(ГдеИщем, ЧтоИщем) Тогда
И не могу сказать что мне это не нравится. Такой питонский стиль. Хочется к теме добавить обсужденияюе что делать в этом случае.
Так же надо понимать что эта же конструкция может быть не только в Если-Тогда ветках, проверять только в них?
1 Да, вполне можно заменять на Если СтрНайти(ГдеИщем, ЧтоИщем) Тогда
2 проверять в разных выражениях, конечно, не только в Если
@zeegin
По проверке не только в Если-Тогда надо уметь вычленить СтрНайти из сложной булевой функции, как ее часть. Например
СтрНайти > 0 И Флаг1 СтрНайти < 0 ИЛИ Флаг2 (Флаг1 ИЛИ Флаг2) И (СтрНайти = 0 ИЛИ СтрНайти < 0)
Конечно, выделение подвыражения подразумевается
Описание проблемы, ошибки, которую надо диагностировать
Разработчики иногда ошибаются в условиях на проверку результат поиска глобальных функций поиска в строках, неточно используя методы
СтрНайти \ Найти
Указанные методы возвращают 0, если значение не найдено.
Поэтому условие
Найти(ГдеИщем, ЧтоИщем) >= 0
не имеет смысла, т.к. всегда истинно. ИлиСтрНайти(ГдеИщем, ЧтоИщем)< 0
всегда ложно и также бессмысленно.Правильные варианты
Найти\СтрНайти
при сравнении с нулем и операторами>=
<
Найти(ГдеИщем, ЧтоИщем) <= 0
можно не учитывать, т.к. это не явная ошибка, а неточность.Найти\СтрНайти(ГдеИщем, ЧтоИщем)
без сравнения с числомСсылка на источник, подтверждающее нарушение либо обоснование наличия проблемы
Похожие ишузы
Параметры диагностики
Тип Статья на русском
Важность Статья на русском
Тэги Статья на русском
STANDARD
- "Нарушение стандартов 1С"LOCKINOS
- "Не будет работать в другой ОС"SQL
- "Проблема с запросом"PERFORMANCE
- "Проблема производительности"BRAINOVERLOAD
- "Непонятный код"BADPRACTICE
- "Плохая практика программирования"CLUMSY
- "Излишние действия"DESIGN
- "Ошибка в проектировании"SUSPICIOUS
- "Подозрительный код"UNPREDICTABLE
- "Непредсказуемо работающий код"DEPRECATED
- "Устаревшая функциональность"ERROR
- "Ошибочная конструкция"LOCALIZE
- "Проблемы локализации"Время на исправление (минут)
1
Дополнительная информация