zzzz5555
Advanced Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору AB60 Попробуй записать через "?": Если Проверка() Тогда ПроцедураХХХ(); //не возвращается значение, не можем использовать "?". Иначе а=1; КонецЕсли Если Проверка()Тогда а=1; Иначе Б=1; //разные переменные, не можем использовать "?". КонецЕсли Если Проверка() Тогда а=1; Б=1; Иначе а=1; Б=1; //стоит использовать Если, чтобы 2 раза не вызывать Проверка(). КонецЕсли "?" имеет смысл в одном случае: Если Проверка() Тогда а=1; Иначе а=2; КонецЕсли По сути: выглядит компактнее, вот и все. Строки, практически идентичны по выполнению: Если Проверка() Тогда а=1 Иначе а=2 КонецЕсли; а = ?(Проверка(),1,2); И там и там, если условие ИСТИНА, второй этап не выкинет ошибку, даже если там несуществующая функция. Есть теория: чем больше строк, тем медленнее выполняется код(одинаковый, конечно) при включенной отладке на сервере, например, строка: а=1; б=1; выполнится быстрее, чем: а=1; б=1; так как после каждой строки идет проверка наличия точек останова. Но большие блоки, конечно, не стоит писать в одну строку, ибо выигрыш незначителен, а читабельность падает в разы. В языках программирования есть ситуации, когда эти операторы будут вести себя по разному в неких специфических условиях, но в 1С я о таких не знаю. Итог: при выборе, что использовать "если" или "?"(при возможности) руководствуйся тем, какой код будет более читабельный. Для справки, если кто не знает: "?" - называется тернарным оператором. | Всего записей: 847 | Зарегистр. 26-10-2009 | Отправлено: 20:07 20-09-2016 | Исправлено: zzzz5555, 20:38 20-09-2016 |
|