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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Profile

juan_gandhi: (Default)
Juan-Carlos Gandhi

May 2025

S M T W T F S
    1 2 3
456 7 8 9 10
11 121314151617
181920 21 222324
25262728293031

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated May. 23rd, 2025 12:11 pm
Powered by Dreamwidth Studios