LINUX.ORG.RU

Как бы вы записали такую конструкцию

 


0

1

Увидел чужой код:

if (i === 1)
    console.log(1);
else
if (i === 2)
    console.log(2);
else
if (i === 3)
    console.log(3);

Я не сразу понял, что происходит. Это норма для джаваскрипта?

Два моих варианта:

// вариант 1
if (i === 1) console.log(1);
    else
        if (i === 2) console.log(2);
            else
                if (i === 3) console.log(3);


// вариант 2
if (i === 1) console.log(1);
    else if (i === 2) console.log(2);
        else if (i === 3) console.log(3);

Вообще в мире джаваскрипта есть какой-то документ который описывает рекомендации по оформлению кода или каждый сам себе такие рекомендации придумывает?

★★★
console.log(i)

а вообще

if (i === 1) 
  console.log(1);
else if (i === 2) 
  console.log(2);
else if (i === 3) 
  console.log(3);

На JavaScript не пишу. Там действительно нет switch?

Begemoth ★★★★★
()

Возьми eslint и посмотри готовые пакеты правил к нему, есть несколько вариантов.

Я обычно подобные лесенки так пишу, если switch нельзя:

if (i === 1) console.log(1);
else if (i === 2) console.log(2);
else if (i === 3) console.log(3);

Vit ★★★★★
()

Единственный расово верный вариант.

if (i === 1) {
    console.log(1);
} else if (i === 2) {
    console.log(2);
} else if (i === 3) {
    console.log(3);
}

urxvt ★★★★★
()

или каждый сам себе такие рекомендации придумывает

Да. JavaScript синтаксически C-like язычок, так что тебе дана свобода действий относительно стилистики написания кода.

Выработай свой стиль, закрепи его в Coding conventions: http://javascript.crockford.com/code.html и придерживайся во всех проектах.

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

Я обычно подобные лесенки так пишу

А потом, когда потребуется вставить ещё одну строку в блок-цель if, нужно снова форматировать код, и получается:

if (i === 1) {
   do_something();
   console.log(1);
}
else if (i === 2) console.log(2);
else if (i === 3) console.log(3);

Что выглядит паршиво. И приходится переписать однотипно:

if (i === 1) {
    do_something();
    console.log(1);
} else if (i === 2) {
    console.log(2);
} else if (i === 3) {
    console.log(3);
}

В итоге потрачены ценные секунды и раздражение, которого бы не было, будь код изначально таким:

if (i === 1) {
    console.log(1);
} else if (i === 2) {
    console.log(2);
} else if (i === 3) {
    console.log(3);
}
EXL ★★★★★
()
Ответ на: комментарий от EXL

А потом, когда потребуется

Не потребуется. У меня программеры раньше регулярно по рукам получали когда делали код с подобными аргументами.

Vit ★★★★★
()

быдлокодло

i===2
  ? console.log('2')
  : (i===0
      ? console.log('0')
      : (i===1 ? console.log('1') : console.log('err'))
    );
i===2 ? console.log('2') : (i===0 ? console.log('0') : (i===1 ? console.log('1') : console.log('err')));
i===2 && console.log('2') || i===0 && console.log('0') || i===1 && console.log('1');
var l = function (e) {console.log(e)};
if (i === 1) l(1);
else if (i === 2) l(2);
else if (i === 3) l(3);
anTaRes ★★★★
()
Ответ на: комментарий от EXL
// blabla1
if (i === 1) {
    do_something();
    console.log(1);
}

// blabla2
else if (i === 2) {
    console.log(2);
}

// blabla3
else if (i === 3) {
    console.log(3);
}
anTaRes ★★★★
()
Ответ на: комментарий от Vit

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

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

бывает :) . Ну помотри какие пресеты для eslint есть и проиграйся с автофиксом. Потом предложи как волшебную хрень.

Vit ★★★★★
()

Если закрыть глаза на повторение i == N ... console.log(N) (подразумевается, что это просто пример, а не реальный код), то так:

if (i === 1) {
  console.log(1)
} else if (i === 2) {
  console.log(2)
} else if (i === 3) {
  console.log(3)
}
theNamelessOne ★★★★★
()

Для вас же, ююю, Web-development придумали!

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