Как стать автором
Обновить

Комментарии 18

Ни одна черепаха не пострадала в процессе.

"...Так как у нас только один класс, нам не нужны сборщики и предварительная компиляция кода..." Т.е. плюсы такого решения имеются! Недоработка налицо!

Интересный вариант: написать что-то вроде fizz buzz enterprise edition для этой задачи. То есть такой плохой код, который появляется при reducto ad absurdum правил хорошего кода

Но плохой код ради плохого кода, это IMHO плохой челлендж.
Лучше - это код, который может быть трудно читать и поддерживать, который нарушает принятые соглашения, но который работает быстрее, или который проще написать и не заморачиваться, если в данный конкретный момент времени это нужно сделать?

Однострочные башизмы известны в мире админов, как вещи, которые решают здесь и сейчас. Но если это скрипт для многократного применения, его лучше расписать чуть шире, и переделать в posix-shell, например.

Так и тут - я понимаю, когда челлендж - обсфукация, или когда челлендж - использование недокументированых фич, которые возможно задепрекейтятся, но сэкономят прямо сейчас и прямо здесь пару секунд/байт/строк, или хотя бы вызовут рофл, когда код в виде картинки или false/truе детектить по длине строки.

Ну то есть объективная цель челленджа. А у вас цель невнятная..

Перескажу вашу мысль в двух словах.

Оценка челленджа основана не на фактах, а на мнениях.

Что-то я не вижу фабрик прокси-черепах, которые находятся сервис-локатором и внедряются в синглтон сетки координат. Дальше по вкусу добавить стратегий, посетителей, адаптеров. Если будет плохо масштабироваться, разбить на микросервисы...

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

Грубо говоря если кому то придет в голову отрефакторить этот код, правильно ли я понимаю, что бОльшую часть ваших трудов он убьет просто отрефакторив нейминг переменных?

Прикольный код, но разве это плохой код? Плохой код должен выглядеть хорошо, с лёгкостью проходить code review, содержать подробные комментарии неверно описывающие работу кода, обильное, но бесполезное журналирование. Программа должна работать медленно и жрать все ресурсы, содержать "оптимизации" пускающие исполнение для тестирования и для прода по разным ветвям (навскидку - можно завязаться на число ядер), а ещё нужны гонки и дедлоки, но так, что бы это стабильно работало при тестировании и нестабильно в проде, например можно использовать неявный сброс кэшей цпу при запиcи в лог - включаем debug - всё работает, выключаем - тоже работает, но уже случайно. Для борьбы с гонками хорошо бы использовать sleep-ы, но так мы не пройдём ПР, поэтому задержки нужны неявные, вызовы во внешние сервисы... Время рабочее, внешние сервисы отвечают быстро - у нас всё хорошо, вечер, прайм-тайм, растёт RT - добавляется элемент игры.
Память, она дожна течь, но не хип, это банально, пускай течёт директ, но не всегда, тоже что бы от луны в меркурии зависел и так что бы OOMKiller приходил внезапно. В код надо добавить уязвимостей, здесь без Unsafe-а не обойтись. Исключения надо ловить все, но только в основном потоке и не ловить в параллельных. У нас же память должна течь? - значит Throwable ловить не надо или ловить, но глушить, не надо никого смущать OOM-ами. И конечно же, необходимо обеспечить выход из программы как минимум в 3-х местах через System.exit();

Видимо вы не сталкивались с действительно плохим кодом)

Если хотите большей непонятности наоборот надо расписать эту задачу в 20 классах, которые будут передавать друг другу некий "Context" с максимальной абстрактностью. Думайте, что вы не черепаху двигаете, а пишете свой движок (а лучше два, с движком внутри движка), который потом, подвинет не только черепаху, но и космический корабль запустит, причем работающий не только с теории относительности, но и с квантовой механикой

и космический корабль запустит, причем работающий не только с теории относительности, но и с квантовой механикой

Если этот код будет корректно работать и с ОТО, и с КМ одновременно, это будет гениальный код, сразу на нобелевку. Любой физик-теоретик за такой код Родину продаст. Два раза.

P. S. Для совсем тупых поясняю: про родину - это шутка.

Не одновременно, а в зависимости от настроек в конфиге.

А-а-а-а, так это шутка?

Надо задействовать несколько фреймворков, обязательно использовать БД… Но видимо написать 10000+ строк кода ради челленджа никто не готов.

Критерии качества кода - это (не в порядке важности):

  • функциональность - способность исполнять поставленные задачи наилучшим образом, в том числе с учётом разных обстоятельств типа ошибок юзера;

  • читаемость - понятность кода для человека, в том числе оформление и именование переменных;

  • оптимизированность - эффективность программы по времени и по памяти;

  • собственный размер - чем меньше, тем лучше.

Соответственно, ужасный код должен быть минимально работоспособным (выполнять поставленную задачу в режиме итальянской забастовки), нечитаемым, умножать дважды два через кривые Фурье полным перебором лонгинта и при этом занимать кучу места на жёстком диске. Если он ещё и самопорождается в ходе работы, причём невозможно понять, какой его фрагмент за это отвечает - идеально! В Google без испытательного, к разработке обновления Gmail приступать с завтрашнего дня!

return "0, 0, север, начало координат привязано к черепахе."

Как написать хороший код? Создать несколько классов.

В этой задаче как раз наоборот.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории