пятница, июля 01, 2011

Странный код

На работе наткнулся вот на такой Java-код:
    boolean flag = false;
    assert flag = true;
    if (flag) {
        // ...
    }
У кого есть идеи, зачем так писать?

4 комментария:

  1. Может, потому что в джаве нет препроцессора?:) Вот и решили вместо #ifdef DEBUG написать через assert

    ОтветитьУдалить
  2. А вообще это точно говнокод, хотя бы потому что переменная называется flag (если, конечно, Вова название не поменял)

    ОтветитьУдалить
  3. Ну все названия я конечно поменял, ибо оригинальное название переменной сразу раскрывает все тайны :)

    Ты близок, Женя, в условном блоке содержится очень большой кусок кода результатом которого является один лишь assert. Соответственно выполнять все тяжелые расчеты если assert'ы все-равно выключены бессмысленно.

    ОтветитьУдалить
  4. А чё, хитро. По-моему, норм трюк. Сам не догадался: запутался, сначала показалось, что там два знака равно: assert flag == true.

    А чтобы это не выглядело как говнокод, и чтоб Don't Repeat Yourself, можно сделать всё в ОО-стиле... Например, как-то так. Вот только лаконичность и понятность такой код сразу теряет.

    Впрочем, я с удивлением обнаружил аналогичный исходному фрагмент кода в официальной документации по Java: Так что называть его говнокодом всё-таки не совсем корректно :)

    ОтветитьУдалить