Имя: Пароль:
1C
1C 7.7
v7: Эстетика.
0 Eeakie
 
22.05.14
01:59
Сильно затупило на небольшом примере.
В запросе есть условие: А (обычная галка в элементе) = 0. Так вот встал вопрос как правильнее написать: А <> 1 или А = 0?
Склоняюсь к первому варианту. Есть какие-то реальные "понятия" по этому поводу? ;)
1 Eeakie
 
22.05.14
02:03
Наверное, надо объяснить зачем мне это.
Пока "зелёный" хотелось бы сразу учиться писать нормальный код...
2 Web00001
 
22.05.14
02:06
Пока "зеленый" сразу учись писать под 8ку
3 Мигало
 
22.05.14
02:07
(2) Выбор должен быть
4 Eeakie
 
22.05.14
02:08
(2) Тоже верно. Уже учусь. Там, между прочим, тоже пригодится. Никогда не знаешь кто будет смотреть твой код. Сам проклинаю "прошлых" программистов очень часто и что-то не хочется чтоб и меня тоже кто-то так люто ненавидел ;)
5 Eeakie
 
22.05.14
02:10
Несколько "спасибо прошлому программисту за понятный код" и карму может поправить ;)
6 Web00001
 
22.05.14
02:11
(4) за А <> 1 о тебе точно не вспомнят, не плохим, не хорошим словом.
7 Злопчинский
 
22.05.14
02:22
(0) присвой галке значение = 2 - посмотри на результат на форме.. попробуй 3. 4, 5... дл яинтереса - попробуй с отрицательными числами...
8 Eeakie
 
22.05.14
02:27
(6) Ну, вот Вы, как бы написали?
9 Eeakie
 
22.05.14
02:28
(7) Я думал у галки может быть только 2 значения О_О
10 Eeakie
 
22.05.14
02:40
Хоть кто-нибудь может оставить коммент, типа:
"Делал бы =/<>, потому что <хоть какой-то аргумент>"?
11 Злой Бобр
 
22.05.14
03:39
Что б научиться, нужно сначала прилично набыдлокодить.
А "правильно" пишут только разрабы 1С. Правда платформа как была кривой так и осталась. Поэтому несоветую с них брать пример - вдруг это заразно ...
12 Web00001
 
22.05.14
03:39
Делал бы а = 0, потому что лень переключать раскладку.
13 Web00001
 
22.05.14
03:40
а вообще это правильный пример для подражания:
>>Хоть кто-нибудь может оставить коммент
14 jsmith82
 
22.05.14
03:54
НЕ (А=1)
15 Balabass
 
22.05.14
03:54
Вообще кошерно делать так:
Если А = 0 или Если НЕ (А = 0) тогда, но это для 8.
Или
Если А Тогда или Если НЕ А Тогда

Для 7 и так и так пойдет.
Если А=1 Тогда или Если А=0 Тогда.
Юзать <> не очень красиво. 2 знака вместо 1.
16 jsmith82
 
22.05.14
03:54
а, 7 же
17 Balabass
 
22.05.14
03:55
(15) *2 символа
18 Balabass
 
22.05.14
03:57
(0) А вообще 7 лучше не изучать, а сразу брать 8.3 и УФ.
А то моск поломаешь. Будешь изгоем в нашем обществе гламурных программиздов...
19 ADirks
 
22.05.14
07:10
(0) В условиях отсутствия булева типа принято считать, что Истина == 1, а всё остальное - Ложь. Поэтому лучше А <> 1  и А = 1 - это более строгое условие, и защита от потенциальных косяков в данных. А то галка галкой, но оказаться там может что угодно. Кроме того, это просто хорошая привычка, полезная в более сложных случаях, типа фЭтоЗеленаяЛягушка(Жевотное) <> 1  - здесь строгое условие защищает программиста от самого себя, если он накосячит с возвратом из ф-ции.

2all: чё вы заладили: семёрка... восьмёрка...  Тема то вообще про хорошие привычки. Во многих языках нет булева типа.
20 Chai Nic
 
22.05.14
07:23
(19) Главное, не впасть в ересь, называя функции логического возврата как императивные процедуры... типа так:
"Если ПроверитьЗначениеПараметраНаУдовлетворениеУсловию(Параметр)=1 Тогда"
Реально бесит своей непонятностью в перспективе.. это логические грабли. К сожалению, писатели типовых так делают сплошь и рядом! :(
21 Эмбеддер
 
22.05.14
07:24
(0) главное чтобы везде было одинаково
22 Balabass
 
22.05.14
07:26
(19) Нет языка кроме 1С и Нуралиев, создатель его.
23 ADirks
 
22.05.14
07:30
(20) Это да. А ещё методики пишут...

Есть неплохая статейка, про то как чего называть: http://www.joelonsoftware.com/articles/Wrong.html
24 an-korot
 
22.05.14
11:59
(0)  А <> 1  тут осуществляется 2 операции и при 1 млн пополнениях она будет работать медленнее чем А=1 ;))

операцию <> правильней заменить на НЕ (А=1) тогда тут система выполняет одну команду и реагирует на отрицание, вроде должно выполнятся так же быстро как и просто равно ;)

но я  еще ни разу не встречал в 7.7 кода - где команда "НЕ" используется )))
25 Злопчинский
 
22.05.14
12:13
(22) маладой патамушта
26 ADirks
 
22.05.14
12:30
(24) учитывая то, как операции с числами реализованы в 1С, подобная "оптимизация" лишена всякого смысла
В восьмёрке, кстати, тоже.
27 Chai Nic
 
22.05.14
12:46
(24) Нет никакой разницы, сравнивать на равенство или неравенство по крайней мере в x68, команды jne и je эквивалентны по быстродействию.
28 an-korot
 
22.05.14
13:29
(27) точно ))) и даже больше ))) при цикле 100млн команда НЕ (А=1) работает на секунду дольше чем просто = или <>
о.О
получается я неправ был.
29 PR
 
22.05.14
16:07
(0) Правильнее сначала сложный вариант, а потом другой.
Пример

Если Количество <> 0 Тогда
    Цена = Сумма / Количество;
Иначе
    Цена = 0;
КонецЕсли;


Но это сугубое имхо.

А вообще при прочих равных условиях = конечно же лучше, чем <>.

В твоем же случае нужно писать то, что говорится словами.
А словами "Если элемент не выбран".
А это значит, что значение = 0, потому что для значков с тремя значениями есть 0, 1 и 2.
30 fisher
 
22.05.14
16:08
(29) ППКС
31 PZh
 
22.05.14
17:45
Правильно так:

НЕ(А <> 0)
32 beholder
 
22.05.14
18:10
(0) НЕ (А*1=А-1)
33 Sj
 
22.05.14
18:42
Когда А
34 Sj
 
22.05.14
18:43
Если А Тогда
35 GreyK
 
22.05.14
20:51
Те, кто на вопросы по 8ке отвечать не могут, тролят клюшки.
Я не заметил разницы в использовании "А<>1" и "НЕ (А=1)". Не знаю как на низком уровне эти команды отрабатывает 7ка, но отладчик этой замены не замечает.
36 Mr_Rm
 
23.05.14
00:06
(35) На низком уровне на байткоде платформы 7.7 это выглядит так (здесь А - флажок на форме):
Если А<>1 Тогда
00000001: [0E 000003]    PUSHCNTX #3
00000002: [0D 000000]    PUSHCONST #0
00000003: [2F 000000]    NE
00000004: [2D 000006]    JZ 00000006

Если НЕ (А=1) Тогда
00000001: [0E 000003]    PUSHCNTX #3
00000002: [0D 000000]    PUSHCONST #0
00000003: [2E 000000]    EQ
00000004: [29 000000]    NOT
00000005: [2D 000007]    JZ 00000007

Т.е. сравнение с отрицанием на команду длиннее, как и можно было предположить. Разница, хоть в какие-то миллисекунды, но будет.
37 Eeakie
 
23.05.14
00:50
(19),(29) Спасибо.
(36) А "<>" рассматривается как две операции сравнения?
38 Eeakie
 
23.05.14
00:50
+(36) Сорри, туплю.
39 Wobland
 
23.05.14
04:53
встретил тут прекрасное

Все эстеты — гомосексуалисты. Это проистекает из самой сущности эстетизма
//повар-оккультист Юрайда, "Похождения бравого солдата Швейка"
40 Wobland
 
23.05.14
04:54
(37) конечно, это же два оператора. и ещё чем короче имя переменной, тем меньше отводится под неё памяти