Jawa / Говнокод #7549 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
int[] indexes = list.getSelectedIndices();
        if (indexes.length == 0) {
            indexes = getAllIndexes();
        }
        if (indexes.length == 0) {
            return false;
        }

индуссы атакуют

Запостил: Dexter Dexter, (Updated )

Комментарии (26) RSS

  • > int[] indexes = list.getSelectedIndices();
    так все-таки индекс или индис?
    индисский код.
    Ответить
      • а где написано, что там null может приходить? Я, например, вообще стараюсь null избегать, всегда пустой список возвращаю, где это возможно.
        Ответить
          • я нигде этого в данном примере не вижу. вы додумали свой вариант, а я свой. мы оба правы. тот кто постил это на говнокод мог бы указать на то, что методы могут возвращать null, ну или хотя бы выложить их реализации.

            А может человек вообще невнимательно посмотрел на этот пример, увидел его как

            int[] indexes = list.getSelectedIndices();
            if (indexes.length == 0) {
            indexes = list.getSelectedIndices();
            }
            if (indexes.length == 0) {
            return false;
            }

            и поспешил сюда запостить.
            Ответить
      • Спорно, очень спорно. Может, по семантике никогда null не возвращается. Опечатка + просто некрасиво. Наверняка можно было лучше придумать, что-то типа:
        boolean hasSelection = list.numOfSelectedRows() > 0;
        int[] indexes = hasSelection ? list.getSelectedIndexes() : getAllIndexes();
        if (indexes.length == 0) {
            return; // nothing to process
        }
        Ответить
        • хотя, с другой стороны, втихую проглатывание нулла тоже не очень хорошо.
          тут логика не раскрыта, непонятно, что имелось ввиду.
          Ответить
          • Я лично код не с первого раза понял. Говно, конечно, но контекста не хватает.
            Ответить
  • Я имел в виду то, что код плохо читабелен. Два одинаковых условия, меня очень сильно выбивают и у меня даже дернулась рука объединить их, что бы привело к изменению логики. 🙂
    Ответить
  • Я имел в виду то, что код плохо читабелен. Два одинаковых условия, меня очень сильно выбивают и у меня даже дернулась рука объединить их, что бы привело к изменению логики. 🙂
    Ответить
  • Возможно так было бы лучше
    int[] indexes;
    if (list.isSelectionEmpty()) {
    	indexes = getAllIndexes();
    	if (indexes.length == 0) return false;
    } else indexes = list.getSelectedIndices();
    Ответить
  • А можно и так:
    ...
    int[] indexes = getIndexesToProcess(list);
    if (isEmpty(indexes)) return false;
    ...

    private int[] getIndexesToProcess(list) {
    int[] indexes = list.getSelectedIndices();
    return isEmpty(indexes) ? getAllIndexes() : indexes;
    }

    private boolean isEmpty(int[] array) {
    return array.length == 0;
    }
    Ответить
  • Вот, хороший пример почему не надо возвращать значения не в конце функции. По-нормальному, должно было быть:
    return list.getSelectedIndices().length > 0 || getAllIndexes().length > 0;
    Ответить
    • ваш вариант и исходный код дают разные результаты
      Ответить
      • Потому, что строчкой выше объясняется, почему разные 🙂 Ну или двумя, если в с мобильного телефона читаете... 🙂
        Ответить
  • топик можно считать закрытым, только вот последний вопрос:
    почему индуссы? они что, этоссут делают особенно, по-индусски?
    Ответить

Добавить комментарий

Из-за тебя ушел bormand, guest!

    А не использовать ли нам bbcode?


    8