Как правильно "ПолучитьСтроку() = 1" или "ПолучитьСтроку() > 0 " ? #268228


#0 by Anderson
Правильное исполнения гарантировано в обоих случаях, но почему-то в типовых решениях используют второй вариант. Ведь метод возвращает всего два значения 0 и 1. Кто какие аргументы приведет?
#1 by Anderson
Только из-за того что лень раскладку переключать!
#2 by mishaPH
Потому, что сравнивать что-то с нулем, быстрее чем с другим. где-то пробегала теория
#3 by smaharbA
со вторым наколетеся...
#4 by _r2003
Дело стиля.
#5 by КонецЦикла
Не надо раскладку переключать :)
#6 by GenV
А где третий вариант ПолучитьСтроку <> 0 ?
#7 by Каанкереде
А где третий вариант ПолучитьСтроку > 0 ??? И четвертый? ПолучитьСтроку <1 ???
#8 by Каанкереде
с тобой вообще 6 вариантов...
#9 by kiroy
привычка
#10 by Anderson
Честно говоря такого варианта я еще не встречал, хотя замечание верное !
#11 by almar
Еще <>1
#12 by GenV
Почему ? :)
#13 by Defender aka LINN
Логика должна быть. Да еще и раскладку переключать...
#14 by ОбдолбанныйВася
Другое.... как в шаблоне забито,  нет шаблона тогда 1 (Раскладка)
#15 by Рэйв
Помоему проверка на равенство работать должна быстрее. Да и определенней как-то.
#16 by Ненавижу 1С
Пробуем ПустоеЗначение(ПолучитьСтроку)=0 а вообще я за
#17 by Фокусник
Это в каких же типовых используют второй вариант? Посмотрел зик - найдено только 6, в тис тоже 6, в комплексной и в бух - 0
#18 by fabrikant
Тему в философию, однозначно...
#19 by Chieftain
По скорости почти одинаково, а так привычнее
#20 by Anderson
ТиС - 38
#21 by Барбариска
Я думаю, что первый программист, написавший ПолучитьСтроку > 0 - ничего особенного не имел ввиду и не заморачивался оптимизацией быстродействия. Потом много-много-много где скопировали и вставили. Мне удобнее ПолучитьСтроку =1, для однообразия стиля вариант ПолучитьСтроку > 0 по мере встреч с ним истребляю.
#22 by DF_Slayer
Сравнивать с 0 быстрее - это факт, но выигрыш по времени микроскопический. А вот переключать раскладку лениво, поэтому
#23 by mishaPH
это смотря сколько элементов в выборке. правила хорошего тона сравнивать с 0 если есть такой вариант
#24 by Defender aka LINN
Ни разу о таком правиле не слышал :)
#25 by smaharbA
А что больше "Пусто" или 0 ???
#26 by Фокусник
возможно... если считать и варианты без пробелов (что само по себе - отсутствие пробелов - дурной тон).  В любом случае вариантов с " = 1" на два порядка больше.
#27 by kazam
лучше бы как в Си <> 0
#28 by zalex
Я хренею, и это программисты, на полном серьезе, да еще голосовалку... Адинэс сожгла ваш мозг )))) Мой вариант в списке отсутствует, да и боюсь матофильтр не пропустит ;)
#29 by Каанкереде
Неопределенностей в программировании не люблю и действую впрямую по документации. Если проверяю "на удачу" то проверяю на равенство 1,  если на неудачу, то на =0...
#30 by smaharbA
думайте...
#31 by Sabron
Сравнение на равенство быстрее и читать удобнее (IMHO)
#32 by Барбариска
когда-то давно писала что-то вроде Число(ПолучитьСтроку)=0 (хотя наверное там был какой-то другой метод, не настолько часто используемый)- потому что в некоторых ситуациях возвращалось неопределенное значение. Сейчас уже давно на эти грабли не наступала, поэтому "паранойя отступила" )) Хотя например флаги - установлен/не установлен проверяю не как "=1"/"=0", а как "<>0"/"=0"...
#33 by zalex
А чего тут думать, это типы разные. Для числовой переменной равны... Я не о том вообще-то, сприть про скорость которую тратишь на сравнение с нулем и единицей имело смысл во времена до персоналок. На одинске же разницы абсолютно никакой не будет. Хотя бы потому что ПолучитьСтроку работает в 1000 раз медленее чем =1 :)
#34 by Anderson
Я так пониманию 1С-цы уже не программисты !!!
#35 by zalex
Ну, судя по этой ветке можно сделать и такой вывод )))
#36 by mishaPH
ну просвяти нас глупых.
#37 by Фокусник
конечно не программисты!!! "1С-цы" - это гораздо более широкое понятие (;
#38 by Военный хомяк
так правильно.
#39 by Рэйв
Завидная уверенность! Сейчас тебя попросят обосновать почему >0  -- неправильно.:)
#40 by zalex
Про скорость уже просвятил, про типы, на примерчик: удивило как можно такую проблему всерьез обсуждать...
#41 by Рэйв
Если честно не совсем понял как это относится к сабжу...
#42 by smaharbA
Нормально обсуждать, в некоторых разах ПолучитьСтроку вернет "Пусто" Счас не смоделирую
#43 by zalex
Это не к сабжу, это к , а по сабжу было бы недопустимо сравнение на >0 если бы ПолучитьСтроку могла вернуть ПустоеЗначение, но она всегда возвращает числовое значение поэтому можешь писать ПолучитьСтроку=1, ПолучитьСтроку>0, а также с учетом ПустоеЗначение(ПолучитьСтроку)=0, отработает одинаково ))
#44 by Anderson
Ну и что ты этим доказал? Что пустое значение и 0 это разные типы (это и так ясно)и что дальше?
#45 by zalex
ПолучитьСтроку Синтаксис: ПолучитьСтроку Назначение: Получить из выборки следующую строку табличной части документа. Возвращает: 1 - если строка выбрана 0 - иначе. сначала смоделируй...
#46 by zalex
Как раз то, что по сабжу одинаковые ;)
#47 by Рэйв
Судя по все-таки есть слухи, что может вернуть и другое:)
#48 by Кирр
Так быстрее и привычнее уже 1. ПолучитьСтроку = 1
#49 by kazam
если хочь ответ - то все равно, если 0 понимать как тип Число
#50 by Ангел-Хоронитель
но даже в этом случае оба условия сработают, или нет?
#51 by Gepard
#52 by zalex
Блин, точно может: вот уроды... ЗЫ: Просто как-то ни разу в голову не приходило на больше/меньше их сравнивать, только на равенство... (
#53 by Барбариска
">0" не сработает, скажет что "Операции сравнения на больше-меньше допустимы только над значениями совпадающих базовых типов (число, строка, дата)"   "=1" - корректнее
#54 by zalex
+ Что ж был не прав, прошу загладить искупить :)) Теперь уже вполне аргументированно (хотя всегда так и делал):
#55 by Рэйв
Добро пожаловать в клуб! :-)
#56 by zalex
А вот так еще смешнее:
#57 by mishaPH
да. а табл.ВыбратьСтроки уже отменили?? 52 в любом случае попадет в исключение с таким подходом. и пофиг с чем сравнивают
#58 by zalex
+ В смысле ошибки не будет, и условие сработает как истина...
#59 by zalex
В не попадет
#60 by Паладин
В последнем моем отчете так.
#61 by zalex
+ и не пофиг, =1 сработает без ошибок и правильно, =0 тоже без ошибок, но не правильно
#62 by mishaPH
блин если ты неправильно пишешь процедуру, то уже пофиг с чем ты ее сравниваешь.
#63 by SanYk
Всегда так писал), да и раскладку менять лень
#64 by kazam
"в любом случае попадет в исключение с таким подходом" 1с коряга конечно но не настолько
#65 by Барбариска
немножко к теме не относится, но тоже забавная вещь Если ТЗ.КоличествоСтрок=0 Тогда всегда ли корректно?
#66 by Anderson
Нет, ТЗ.ПолучитьСтрокуПоНомеру(Зн)!!!
#67 by Барбариска
"Возвращает число: 1 - если выбор произведен (нажата кнопка ОК); 0 - если выбор не произведен (нажата кнопка ''ОТМЕНА''); -1 (минус единица) - закончилось время <Таймаут> ожидания отклика пользователя. Параметры: <Строка> - необязательный параметр. Идентификатор переменной, куда помещается значение - номер выбранной строки. При вызове метода здесь можно передавать значение начального номера строки.
#68 by zalex
Сбойнет, если в ТЗ нет колонок
#69 by Anderson
Согласен, ступил :)Тогда темболее некорректно
#70 by Барбариска
ладно, пусть колонки есть. Нормальная такая ТЗ с нормальными такими колонками :)
#71 by Рэйв
Вот откажешься ты от выбора, вернется тебе в Зн нолик.И что тебе скажет Эска, когда ты попытаешься получить строку с таким номером?:)
#72 by Рэйв
Если ном будет 0 или больше количества строк --вылетишь
#73 by Хванчкара
Наш выбор!
#74 by zalex
И чо? Отказался от выбора, ТЗ.ВыбратьСтроку(Ном) вернет 0, далее не(0=1) двойное отрицание, значит истина, уходим на возврат, т.е. конструкция полностью аналогична:
#75 by zalex
не вылетишь
#76 by Рэйв
Ну ладно.Все равно неправильно  ПолучитьстрокуПоНомеру(Зн) :)
#77 by Барбариска
см пусть изначально инициализировали Ном = 1; Выбрали строку, клацнув двойным щелчком по ТЗ -...если "промазали" - чуть ниже последней строки - вылетаем - строка вроде и выбрана (ВыбратьСтроку возвращает 1), а вроде и Ном = 0... ))
#78 by zalex
тоже неплохо )
#79 by Барбариска
(+77) поэтому возвращаемое значение Ном тоже приходится контролировать, как бы это ни казалось со стороны излишним))
#80 by zalex
ПолучитьстрокуПоНомеру(Зн) это несколько иное, поверь :) тут про интерактив...
#81 by zalex
Необязательно тоже, достаточно только его и контролировать. Например так:
#82 by Рэйв
Да я вкурсе разницы, поверь:)
#83 by zalex
+ Правда тут уже можно на нарваться, но достаточно начальное значение присваивать единицу и проверять на количество строк...
#84 by zalex
Значит не в курсе что пост не мой... Я просто не очень въехал что ты в сказать хотел )
#85 by ROB
Привык так писать.
#86 by Рэйв
ладно, проехали:)
#87 by Мулька
хотя правильнее, имхо, на >0 Раньше (в других языках) на 1 или 0 никогда не сравнивали, ибо возвращаемый результат в машинных кодах выглядел как 0,999999......, но не 1 - не помню в каком языке/компиляторе, но на такое накалывался.
#88 by smaharbA
Читать внимательно ветку... И много думать !!!
#89 by Мулька
В лом. Ответил на 0. Как правильнее. С моей точки зрения.
#90 by zalex
Зря... Нарвешься, изменишь точку зрения :)
#91 by Мулька
На несоответствие типов ? Внимательно читать . Считаю правильным >, привык к =. Если где и нарываюсь - знак не правлю, добавляю Число или Строка/СокрЛП
#92 by zalex
Фиговый какой-то у тебя был компилятор, если функция возвращает значение вроде int, значит и вернуть она должна 1, а никак не 0,9999999. В любом языке. Похоже тебе что-то смутно припомнилось про работу с переменными с плавающей точкой, так их правда на равенство нельзя сравнивать, потому как количество знаков после запятой переменно, но это совершенно не тот случай...
#93 by Мулька
Может и так. Давно это было, но в подсознании осталось. На PL/1 тоже когда то рисовал, может даже и Фортран. Машина была не чета нынешним - ЕС-1022, 1035, 1060
#94 by zalex
Ты не поверишь, но в одноэсе остались те же грабли, так как там тоже есть числа с плавающей точкой, но в этой ветке обсуждались не они ;)))
#95 by Злопчинский
Я вообщем то юзаю ПолучитьСтроку<>0 и флаг проверяю ноль или не ноль
#96 by zalex
Глянь прикольно... Там ошибка конечно, нет ВыбратьСтроки, но ты разве никогда не ошибаешься? ;) =1 без вариантов сработает верно, больше/меньше не рулит, и даже с неравно есть шанс нарваться
#97 by ShootNICK
На разные получить/найти памяти не напасешься, где то возвращается 1, где то порядковый номер символа.
#98 by mishaPH
Что ж  ты такой упертый! там ощибка, все будет работать итак неправильно и пофиг уже что возвращает о или -1 или еще какую хрень
#99 by DF_Slayer
Кстати, ВыбратьСтроки для ТЧ документа отменили :) Даже в типовых есть такое...
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С