LINUX.ORG.RU

Кошерно ли такое сокращение условия?

 , , ,


0

1

Терпеть не могу условия в одну строчку:

if (!isSilent) {
  dispatch({ ... })
}

Пишу их вот так:

!isSilent && dispatch({ ... })

Это норма? Почему норма? Почему не норма?

Deleted

Последнее исправление: Bizun (всего исправлений: 1)

Это норма?
node.js

Да, все ок. Ставль лгтм.

urxvt ★★★★★
()

IMHO у второго читаемость фиговая. Но это вкусовщина. Видел толстые проекты, где подобное во все поля.

Vit ★★★★★
()

Это норма? Почему норма? Почему не норма?

Если, остальной код тоже функциональный, то норма, иначе это просто понты.

vvn_black ★★★★★
()
Последнее исправление: vvn_black (всего исправлений: 1)
Ответ на: комментарий от vvn_black

Если, остальной код тоже функциональный

Ну щас функциональный код есть во всех JS-проектах, как на фронте, так и на беке.

Как оценить соотношение императивного, декларативного и функционального кода в проекте, чтобы понять, является ли остальной код функциональным - тут уж я хз.

Deleted
()
Ответ на: комментарий от Deleted

Ну щас функциональный код есть во всех JS-проектах, как на фронте, так и на беке.

Скорее, элементы функционального кода. )

Ну, если вместо циклов - рекурсия, то и flow control ленивыми выражениями, а не операторами. )

Если серьёзно, то присоединяюсь, что вкусовщина. Если не в команде, то как удобнее. А, например, в реакте, такой штукой очень удобно условный рендеринг делать.

vvn_black ★★★★★
()

Почему не норма?

Потому что при беглом просмотре сложно заметить. Мне больше нравится такая логика - если в результате сравнения идет вызов каких-то функций, создание каких-то объектов или еще что-то такое (действие) - писать через "if", а если результат сравнения является значением какой-то переменной (то есть действие тут это как раз присваивание) - писать в одну строку, но в виде тернарного оператора.

micronekodesu ★★★
()

Терпеть не могу

Мочь не терпишь. Условие должно быть условием, вызов должен быть вызовом.

deep-purple ★★★★★
()
Ответ на: комментарий от deep-purple
if (isSilent) {
    doSomething()
}
needVerbose = (isSilent) ? true : false;

То есть мне удобнее\логичнее\нагляднее когда "сразу" понятно, что будет с результатом - в однострочном варианте понятно что главное для нас - записать какое-то значение, а в варианте с if - выполнить какие-то инструкции (ну для меня так).

micronekodesu ★★★
()
Ответ на: комментарий от no-such-file

Если бы за всё выёживание били в морду, программы до сих пор писали бы в машинных кодах, выжигаемых лазером прямо в кристалле.

Moondancer
()

Это норма?

Это терпимо, так как работает.

Почему норма?

Потому что ты сам определяешь норму или соглашаешься с нормой определённой кем-то другим, если такая норма тебя устраивает, то норма.

Почему не норма?

Я не знаю ноду и не одобряю функциональщину, но бил бы за объединение проверочных условий и действий долго, возможно даже ногами.

peregrine ★★★★★
()
Последнее исправление: peregrine (всего исправлений: 1)
Ответ на: комментарий от Vit

IMHO у второго читаемость фиговая

такое хорошо читается, если есть с десяток похожих условий, которые есть смысл записать в столбик

MyTrooName ★★★★★
()
Ответ на: комментарий от MyTrooName

Так да, но когда оно одно и кода в скобках много, то это ужасно.

peregrine ★★★★★
()
Ответ на: комментарий от Deleted

Потому что плохочитаема и усложняет простые абстракции.

peregrine ★★★★★
()
Ответ на: комментарий от MyTrooName

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

Vit ★★★★★
()
Ответ на: комментарий от Vit

Но у каждого нового юзера будут глаза вытекать, пока не привыкнет

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

no-such-file ★★★★★
()
Ответ на: комментарий от no-such-file

Я раньше тоже думал, что так пишут только упоротые школьники. Но случайно наткнулся, что это юзается в жикваери. Так что все-таки вкусовщина, которая зависит от обстоятельств.

Vit ★★★★★
()
Ответ на: комментарий от Vit

это юзается в жикваери

так пишут только упоротые школьники

Не вижу противоречия.

no-such-file ★★★★★
()
Ответ на: комментарий от no-such-file

А такая, дедукцию примени. Тебе предлагают наглядный и элегантный способ не превращать код в индусский столбик, а ты нос воротишь и лезешь морду бить, ведь деды писали столбиком по оператору на строчку.

Moondancer
()

Когда ты спрашиваешь о чем-то в контексте стайлгайдов, то и надо отталкиваться от конкретного стайлгайда. Правила не бывают в отрыве от других правил.

Вот, например, пуплярный нынче стайлгайд AirBnB для публичного кода https://github.com/airbnb/javascript#control-statements--value-selection говорит, что так как ты хочешь, делать нельзя. А следовательно, если ты работаешь над проектом, где соблюдается этот стайлгайд, твой код не примут. Почему? Потому что так сказал стайлгайд. Он для того и существует, чтобы исключить все субъективные мнения на счет чего-либо.

mimico
()
Ответ на: комментарий от Moondancer

предлагают наглядный и элегантный способ не превращать код в индусский столбик

А ничего, что этот способ делает немного другое? К тому же я не понимаю, что за религия запрещает писать

if (!isSilent) dispatch(...);
в одну строчку и не трахать людям мозг?

no-such-file ★★★★★
()
Ответ на: комментарий от no-such-file

что за религия запрещает писать

function вместо fn? И вообще, COBOL FTW.

и не трахать людям мозг

Гуманитариям, которые не умеют в логические операторы, а при виде сдвигов вообще выпадают в осадок и тянутся за банхаммером?

Moondancer
()
Ответ на: комментарий от Moondancer

которые не умеют в логические операторы

При чём тут умение? Тебе русским языком сказано - это не равнозначная замена. Иди дедуктируй, почему.

no-such-file ★★★★★
()
Последнее исправление: no-such-file (всего исправлений: 1)

Не норма, потому что если я когда-нибудь захочу вставить перед dispatch() что-нибудь типа do_some_shit(), мне станет грустно.

EXL ★★★★★
()

Это не норма потому, что теряется и загрязняется «человеческий» смысл, поскольку вы превращаете условный оператор («если что-то, сделать нечто») в логическое выражение. Примерно то же самое, что вместо a -= b писать a += -b.

Nastishka ★★★★★
()

и так и так пишу(для себя) под настроение

Int0l ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.