LINUX.ORG.RU

Java факап

 , ,


0

1

Что вернёт метод и почему?

public int x() {
  boolean isFalse = false;
  Integer i1 = 1;
  String str = "x";
  if (str.equals("e") && 
      !isFalse ? true : i1.equals(1)) {
    return 1;
  }
  return 0;
}
//openjdk version "1.8.0_222"

★★★★★

Последнее исправление: crutch_master (всего исправлений: 3)
Ответ на: комментарий от mimico

Почему?

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

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

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

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

код должен легко читаться и легко парситься, тогда ты сэкономишь людям время Java факап (комментарий)

Да, офигеть как легко парсится, вместо простого тернарника, которому надо только скобок поставить в условии.

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

Да, потому что в школе годами учат его парсить. А про тернарный оператор максимум вскользь скажут.

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

офигеть как легко парсится

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

вместо простого тернарника, которому надо только скобок поставить в условии

Пожалуйста, перечитай мои сообщения. Дело не в скобках, а в их необязательности. Больше скажу, если бы скобки были бы обязательными, то и проблемы бы не было.

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

Согласен. Но непонятно, где их требовать. Вокруг условия и вокруг всего оператора? А если нуб пишет “if (a || (x && (y-1) ? …))”, то что он ожидает? Как разлинтить его непонимание?

Существует также ?(cond, expr, expr) нотация, больше похожая на то, о чем речь. Я ее где-то видел помимо 1с, но не помню где. Возможно в бейсике каком-то древнем.

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