boolean flag = false; assert flag = true; if (flag) { // ... }У кого есть идеи, зачем так писать?
пятница, июля 01, 2011
Странный код
На работе наткнулся вот на такой Java-код:
Подписаться на:
Комментарии к сообщению (Atom)
Может, потому что в джаве нет препроцессора?:) Вот и решили вместо #ifdef DEBUG написать через assert
ОтветитьУдалитьА вообще это точно говнокод, хотя бы потому что переменная называется flag (если, конечно, Вова название не поменял)
ОтветитьУдалитьНу все названия я конечно поменял, ибо оригинальное название переменной сразу раскрывает все тайны :)
ОтветитьУдалитьТы близок, Женя, в условном блоке содержится очень большой кусок кода результатом которого является один лишь assert. Соответственно выполнять все тяжелые расчеты если assert'ы все-равно выключены бессмысленно.
А чё, хитро. По-моему, норм трюк. Сам не догадался: запутался, сначала показалось, что там два знака равно: assert flag == true.
ОтветитьУдалитьА чтобы это не выглядело как говнокод, и чтоб Don't Repeat Yourself, можно сделать всё в ОО-стиле... Например, как-то так. Вот только лаконичность и понятность такой код сразу теряет.
Впрочем, я с удивлением обнаружил аналогичный исходному фрагмент кода в официальной документации по Java: Так что называть его говнокодом всё-таки не совсем корректно :)