lxe: (Default)

[personal profile] lxe 2017-03-15 10:31 pm (UTC)(link)
На седьмом слайде я бы еще написал про расовые проблемы.
lxe: (Default)

[personal profile] lxe 2017-03-15 11:09 pm (UTC)(link)
Повторная проверка флага не просто тратит циклы, но и может вернуть другой результат.
lxe: (Default)

[personal profile] lxe 2017-03-16 12:22 am (UTC)(link)
На триллиарде инсталляций сбываются очень гомеопатические вероятности. "Опыт", как говорил Иоанн Кронштадтский.

[personal profile] sassa_nf 2017-03-16 08:03 am (UTC)(link)
Чому?

Тут навіть конкурентного доступу не треба, просто об'єкти мутують. Тоді ще питання, що малось на увазі в коді - чи давнє значення флагу, чи нове, з урахуванням нових обставин та мутації об'єкта.
lxe: (Default)

[personal profile] lxe 2017-03-15 10:32 pm (UTC)(link)
И с четырнадцатым можно бы поспорить.)

[personal profile] sassa_nf 2017-03-16 07:48 am (UTC)(link)
13-й слайд - не враховує наявність наслідування
stas: (Default)

[personal profile] stas 2017-03-16 04:54 pm (UTC)(link)
В 13-м должно быть не фиксированный MyClass, а getClass().getName() какой-нить, наверное.

[personal profile] sassa_nf 2017-03-16 05:12 pm (UTC)(link)
угу, щось таке
stas: (Default)

[personal profile] stas 2017-03-16 08:52 pm (UTC)(link)
Это баг интелиджея, значит - это вполне стандартные функции, должен сразу их лепить.
snowps: (Default)

[personal profile] snowps 2017-03-16 07:56 am (UTC)(link)
Интересно, в чём плюсы перформанса на шестом слайде, если там вместо вызова функции делается аж new? :)
snowps: (Default)

[personal profile] snowps 2017-03-16 05:07 pm (UTC)(link)
Ну я не джавный человек, поэтому легко могу ошибаться относительно того, во что именно транслируется подобный код, но меня всегда смущает new внутри условных операторов в составе функций/методов. К самой идее, что параметры в большинстве случаев (не всегда - например если вызов функции или выделение внутренних структур данных JVM для работы с объектом класса связаны с существенно бОльшим оверхедом, чем проверка флага снаружи, то это далеко не очевидно) я отношусь весьма положительно, - смущает именно конкретная реализация примера. :)
gegmopo4: (Default)

[personal profile] gegmopo4 2017-03-16 09:55 am (UTC)(link)
Кто ж так пишет? В смысле, выходцы с каких языков?
gegmopo4: (Default)

[personal profile] gegmopo4 2017-03-16 09:04 pm (UTC)(link)
Python вряд ли. Там switch нет, а ООП есть. Плюс функции, классы и методы — first-class citizens, и локальные функции/классы вполне идиоматичны. А «если функция принимает булевский параметр, то лучше сделать две функции» — один из принципов ГвР.

[personal profile] sassa_nf 2017-03-16 04:40 pm (UTC)(link)
у нас в компанії такого повно. Ліди обурювались, коли я ввів наслідування в одному місці замість 12 місць, де перевірка флага
stas: (Default)

[personal profile] stas 2017-03-16 04:52 pm (UTC)(link)
Есть вопросы к докладчику:

7: я так понимаю, что имеется в виду условие б-м статическое, вроде logging level. Тогда есть известная нам из логгинга же ситуация - что если не просто paint() а paint(BigFatObject)? Тогда если мы знаем, что рисовать не будем, то и BigFatObject нам нафиг не нужен, можно им не заморачиваться. А с анонимным классом - фиг его знает, будет он рисовать или нет. Та же история с отладкой - прилетел какой-то аноним, а что у него внутри? Правильное ли там состояние? Как это понять?

8: понятно, что любой булевский аргумент можно развернуть в две функции. Однако если у этих функций 90% кода общие, то надо или делать вместо этого 8 функций, которые по кусочкам собирают общие части, тщательно избегая необщих, или копипейстить.

9: вообще непонятно, что советуется делать. Refactor как? Почему он вдруг от этого станет obvious?

gegmopo4: (Default)

[personal profile] gegmopo4 2017-03-16 09:09 pm (UTC)(link)
Кстати по 8 и 9 — в Java очень не хватает keyword arguments. Или уже прикрутили?
errorrishe: (Default)

[personal profile] errorrishe 2017-03-16 09:49 pm (UTC)(link)
некотыре моменты 1-в-1 похожи на то что я вижу регулярно
любимый патерн одного нашего маэстро - одим метод с 8 параметрами в котором в зависимости от нуловости\значений параметров логика разливаеться в море ветвлений и рекурсивных вызовов чего папало
ну или там поток исполнения на куче void методов которые шарят общий контекст.
Ну и этот контекст = map в котором все говно навалено по текстовым ключам и возращает на выбор Data String BigDecimal and Integer и надо просто знать какого типа конретная ебала иначе нате вам null.
errorrishe: (Default)

[personal profile] errorrishe 2017-03-18 04:54 am (UTC)(link)
я вроде как начал пропихивать через архитекторов решение что бы эту вольницу забороть, но со следующей недели меня перекинули на другой проект ( и времени этим заниматься у меня не будет скорее всего )

[identity profile] gineer.livejournal.com 2017-03-18 07:47 am (UTC)(link)
А вдруг с ними лучше? ;)

[identity profile] gineer.livejournal.com 2017-03-18 07:46 am (UTC)(link)
\\map в котором все говно навалено по текстовым ключам и возращает на выбор Data String BigDecimal and Integer и надо просто знать какого типа конретная ебала иначе нате вам null.

Ага... но как не крути, а это -- удобно.

Сам как-то пришел к такому варианту, и оказалось что код полкчается чище и удобнее работать -- не надо следить за кучей "хвостов".