Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Тернарные операции - да или нет (https://javascript.ru/forum/misc/34760-ternarnye-operacii-da-ili-net.html)

animhotep 17.01.2013 17:54

Тернарные операции - да или нет
 
В рекомендации по оформлению js http://docs.jquery.com/JQuery_Core_S...delines#Blocks

>Don't use ternary operators instead of if/else statements.

А сегодня вот наткнулся https://github.com/jquery/sizzle/wik...-Documentation

return not ? elements.slice( 1 ) : [ elements[0] ];


причём у sizzle и JQuery один автор :-? который видимо так и не определился

собсна вопрос - используете ли вы тернарные операции? как по мне они компактней if/else и стоит их использовать по возможности

Skipp 17.01.2013 17:57

Только в тех случаях, когда логика условия не сложная, что бы было читаемо.

animhotep 17.01.2013 17:59

интересно было бы узнать почему в том гайде не рекомендуют их юзать

Deff 17.01.2013 18:37

http://javascript.ru/basic/operators#sravnenie
http://javascript.ru/optimize/google...-prostyh-if-ov

monolithed 17.01.2013 18:39

Цитата:

Сообщение от animhotep
интересно было бы узнать почему в том гайде не рекомендуют их юзать

Возможно по тому, что у всех разное видинение, на то как должен выглядеть код.

Вообще это тупо запрещать использовать тернарный оператор, даже если у него отличается поведение в других языках.

nerv_ 17.01.2013 19:34

Цитата:

Сообщение от animhotep
и стоит их использовать по возможности

проблема в том, что новички перебарщивают с ними, делают их вложенными и прочие извращения. За вложенность такой штуки я бы руки отрубал :)

Я использую редко и исключительно для присваивания (возвращения значения), а не
1 > 0 ? alert( true ) : false;

Gvozd 18.01.2013 01:13

Цитата:

Сообщение от animhotep
В рекомендации по оформлению js http://docs.jquery.com/JQuery_Core_S...delines#Blocks

Цитата:

Сообщение от animhotep
причём у sizzle и JQuery один автор который видимо так и не определился

Цитата:

Сообщение от animhotep
А сегодня вот наткнулся https://github.com/jquery/sizzle/wik...-Documentation

Каким боком рекомендации по оформлению кода в jQuery относятся к Sizzle?
И с каких это пор у них один автор? Их разрабатывает два частично пересекающихся сообщества.
Цитата:

Сообщение от animhotep
>Don't use ternary operators instead of if/else statements.

Цитата:

Сообщение от animhotep
return not ? elements.slice( 1 ) : [ elements[0] ];

Не вижу ни малейшего противоречия между этими двумя строчками.
В гайдлане предполагается не использовать тернарный оператор заместо if/else.
В коде же тернарный оператор вполне корректно используется.
Если его заменить на if/else, то это будет немного излишнее использование if/else заместо тернарного оператора

animhotep 18.01.2013 16:45

Цитата:

Сообщение от Дзен-трансгуманист (Сообщение 227873)
Рекомендации гайда относятся к ядру JQuery, а не к JS вообще.
Очевидные вещи нужно понимать самостоятельно.

а JQuery это не JS что ли?) это какбы best practice по оформлению кода

animhotep 18.01.2013 16:47

Цитата:

Сообщение от Gvozd
Каким боком рекомендации по оформлению кода в jQuery относятся к Sizzle?
И с каких это пор у них один автор? Их разрабатывает два частично пересекающихся сообщества.

http://en.wikipedia.org/wiki/John_Resig
>best known as the creator and lead developer of the jQuery JavaScript library.
его оффсайт http://ejohn.org/

megaupload 19.01.2013 03:25

Часто новички думают что тернатрый оператор придумали как сокращенную запись условным операторам вроде if и switch
подобно тому как придумали сокращенный способ инициализации массивов [] за место new Array;

На самом же деле тернарный оператор нужен для того чтобы встраивать небольшие условные ветки прямо в выражения; Если вам нужно сделать условия прямо в выражении то вы используете тернарный оператор, если же вам нужно сделать условие вне выражения, то вы используете if и else;


В руководстве же ясно сказано что не стоит использовать операторы не по назначению, и не стоит использовать тернарный оператор вне выражений;

animhotep 23.01.2013 00:00

a можно пример? это же и есть сокращение if/else
вот из этой книги

В:
Вы упоминали о сокращенной форме команды if/else.
Как она выглядит?
О:При использовании так называемого тернарного оператора условие отделяется от выполняемого действия вопросительным знаком:
a > b ? код_true : код_false

megaupload 23.01.2013 00:51

animhotep, Ты видимо и в библию веришь?
Книга же. Не каждый же может написать книгу с погоне за баблом.

megaupload 23.01.2013 00:53

Цитата:

Сообщение от animhotep
a можно пример?

рас
this.state = (parseInt(state) === Widget.STATE_OFF) 
                          ? parse(state)
                          : parse(Widget.DAFOULT_STATE);


два
var prop = "rule: " + (isVendor ? "-webkit-" : "") +  "box-shadow";

megaupload 23.01.2013 00:56

Цитата:

Сообщение от animhotep
это же и есть сокращение if/else

Под "сокращением" жопорукий автор перевода видимо имел ввиду что использовать ТЕРНАРНЫЙ ОПЕРАТОР по назначению куда короче, чем использовать для этого блоки кода.

animhotep 24.01.2013 12:35

да хрен тут разберёшь кому верить))
спасибо, вроде въехал


Часовой пояс GMT +3, время: 20:27.