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;


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


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