powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Java [игнор отключен] [закрыт для гостей] / Сеньтябрские тезисы Егора Бугаенко (+толстое видео)
25 сообщений из 170, страница 2 из 7
Сеньтябрские тезисы Егора Бугаенко (+толстое видео)
    #39933468
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
asv79

Код: java
1.
2.
return new RsPage(
            "/dir.xsl",


а за такое надо руки отрубать.
хардкод в 2020 году lol what?

вообщем там и смысла смотреть нет дальше все лежит на поверхности

Коде-ревью - это просто консенсус группы людей которые по джентльменски
собрались и решили что такой код ПРИЕМЛЕМЫЙ для них и сопровождение
его не доставит проблем.

А теперь вопрос к тебе - как ты предлагаешь улучшить этот код? Не забывай также про KISS/YAGNI. Их никто не отменял.

вынести стрингу в константу с говорящим названием?
как минимум это даст лучшее понимание кода и не нужно будет лазить потом кругом искать где оно еще используется ,а просто поменять 1 литерал в классе с константами
это первое ,второе если по этому адресу нет ничео -вернется нуль?значит -нужено обернуть в optional

это просто рандомная строчка из его кода,если там глубже копать и провести тесты - я больше чем уверен автор сам удивится)
...
Рейтинг: 0 / 0
Сеньтябрские тезисы Егора Бугаенко (+толстое видео)
    #39933470
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmaster
lleming
Но есть мнение что серебрянной пули нет и там свои пролемы.

Для нормальной разработки есть необходимость уместно применять разные стили и подходы программирования. Но это не про яву, например, где просто не делали перегрузки операторов по каким-то своим религиозным причинам и пишут
Код: java
1.
2.
BigDecemal a = BigDecimal.valueOf(2), b = BigDecimal.valueOf(3);
BigDecemal c = a.divide(b);


Вместо
Код: java
1.
BigDecimal c = 2/3;



BigDecimal c = BigDecimal.of(2).divide(BigDecimal.of(3));
BigDecimal c = BigDecimal.of(2/3); (делим целочисленные и приводим целочисленный результат к bigdecimal)?
BigDecimal c = BigDecimal.of((double) 2/3) (приводим к double |? float делим и присваиваем)
где какие потери точности как сразу понять
...

где какой результат ожидать?

вот в ocaml сделано интересно, проецируя на ocaml

float c = 2 /. 3; деление с плавающей оба приводятся к float и производится деление (возможна потеря точности)
int c = 2 / 3; (Результат 0)
float c = 2 / 3 (ошибка компиляции тип присваемоей переменно не совпадает с типом резульата)
float c = 2 / 3. (ошибка компиляции целочисленное деление но операнды не все целочисленные)
....
...
Рейтинг: 0 / 0
Сеньтябрские тезисы Егора Бугаенко (+толстое видео)
    #39933472
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asv79
mayton
пропущено...

Коде-ревью - это просто консенсус группы людей которые по джентльменски
собрались и решили что такой код ПРИЕМЛЕМЫЙ для них и сопровождение
его не доставит проблем.

А теперь вопрос к тебе - как ты предлагаешь улучшить этот код? Не забывай также про KISS/YAGNI. Их никто не отменял.

вынести стрингу в константу с говорящим названием?
как минимум это даст лучшее понимание кода и не нужно будет лазить потом кругом искать где оно еще используется ,а просто поменять 1 литерал в классе с константами
это первое ,второе если по этому адресу нет ничео -вернется нуль?значит -нужено обернуть в optional

это просто рандомная строчка из его кода,если там глубже копать и провести тесты - я больше чем уверен автор сам удивится)

Это ты что-то недоучил.

Конструктор никогда не возвращает null в Java. Он или всегда отрабатывает или бросает неконтролируемое исключение
но в этом случае нам плевать на return потому что исключение выбросит нас раньше чем return.
...
Рейтинг: 0 / 0
Сеньтябрские тезисы Егора Бугаенко (+толстое видео)
    #39933474
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Вобщем все кто хотели сложных типов

Типизация это тоже такая палка о двух концах. Мне, например, каждый месяц говорят, что у нас тут все поменялось и надо считать не так, как считали всегда. В итоге весь красивый код написанный до этого регулярно обрастает всякими костылями и невольно начинаешь смотреть в сторону какой-нибудь динамики и парней с аккуратными бородками, беззаботно потягивающих свой смузи.
...
Рейтинг: 0 / 0
Сеньтябрские тезисы Егора Бугаенко (+толстое видео)
    #39933475
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asv79
то первое ,второе если по этому адресу нет ничео -вернется нуль?

Этот чувак null предал анафеме, ты вообще ничего не понял и цепляешься ко всякой херне.
...
Рейтинг: 0 / 0
Сеньтябрские тезисы Егора Бугаенко (+толстое видео)
    #39933478
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmaster
Типизация это тоже такая палка о двух концах
все в мире палка о двух концах. Эка невидаль.
...
Рейтинг: 0 / 0
Сеньтябрские тезисы Егора Бугаенко (+толстое видео)
    #39933481
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmaster
цепляешься ко всякой херне
+1
...
Рейтинг: 0 / 0
Сеньтябрские тезисы Егора Бугаенко (+толстое видео)
    #39933482
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmaster
mayton
Вобщем все кто хотели сложных типов

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

По личному наблюдению языки с динамикой (JScript/Python) имеют смысл на прототипах или на малых проектах.
Чем больше он будут расти в монолит (а это закономерный конец почти всех проектов) тем сильнее и сильнее
будет влияние рандомных ошибок типизации. В самом деле. Кто в крупном проекте с динамикой сможет гарантировать
что данный метод корректно вызовут при условии что компиллятор даже этого не знает. Сведенья о типах появятся в рантайме.
Поэтому бородачи потягивающие смузи имеют большой технический долг. Или они - крайне безответсвтенны и их
кажущаяся беззаботность имеет другую природу. Не техническую. Но мы об этом не будем говорить тк тема топика - Java.
...
Рейтинг: 0 / 0
Сеньтябрские тезисы Егора Бугаенко (+толстое видео)
    #39933485
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lleming
где какой результат ожидать?

Да, не совсем удачный пример. a и b надо было просто присвоить 2 и 3.
...
Рейтинг: 0 / 0
Сеньтябрские тезисы Егора Бугаенко (+толстое видео)
    #39933487
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
По личному наблюдению языки с динамикой (JScript/Python) имеют смысл на прототипах или на малых проектах.

Ну это решается просто. Большой проект делается из кучи маленьких.
mayton
Кто в крупном проекте с динамикой сможет гарантировать

Да никто там, конечно, ничего не будет гарантировать. Фича же такая, что пока не запустишь не узнаешь, там все имеет смысл тащить в рантайм, да и вообще подходы нужны совершенно другие.
...
Рейтинг: 0 / 0
Сеньтябрские тезисы Егора Бугаенко (+толстое видео)
    #39933488
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmaster
mayton
Вобщем все кто хотели сложных типов

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


бытует мнение что обрастанием костылями это свойство человеческой натуры и оно, ортогонально понятиям ООП и Фуникционального программирования. Вопрос в том после того как код обрастет костылями что будет проще поправить. Костыли если код написан в функциональном стиле или ООП.

maytonПо личному наблюдению языки с динамикой (JScript/Python) имеют смысл на прототипах или на малых проектах.
Чем больше он будут расти в монолит (а это закономерный конец почти всех проектов) тем сильнее и сильнее
будет влияние рандомных ошибок типизации.

Очень точно подмечено. Обычно в таких случаях я вспоминаю django, где через один метод передается **args, **kwargs внутрь, и в дебаге мысли что за му**ки это придумали передавать все и вся в метод и там решать что с этим делать. Либо ты все знаешь про метод (считай читал его не один раз а лучше даже сам написал) либо офигеваеш от контекста который нужно держать в голове уже на третьем слое.
...
Рейтинг: 0 / 0
Сеньтябрские тезисы Егора Бугаенко (+толстое видео)
    #39933491
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Некоторое время назад я пожалел что мы еще не на Скале. Мы часто используем generics.
В части например таких

Код: java
1.
Map<Integer,Map<Integer, Pair<Integer,Integer>>>



Это удобно для конструирования всякой логики. Но беда подобных дженериков в том что они совершенно
скрывают информацию о том что за величина лежит внутри. У нас были id-шники разных типов. Они все были int
но несли разную семантику. ID-order, ID-local, ID-global, и эти-же величині (lnt,Long) использовались для меток
времени timestamps. Понятно что ошибка программиста в толковании этого значения приводила сложным
и трудно улавливаемым дефектам. А если-бы мы могли сделать дефиницию типа наподобие.

Код: java
1.
Map<IDOrder,Map<IDGLobal, Pair<Timestamp,IDlocal>>>



То проблема хотя-бы констрейнтов в фазе например присвоения или comarison устранялась.
Уходил целый пласт возможных ошибок. Появлялись какие-то гарантии что программист не сделает
фигню.

Оборачивать каждый Int обёрткой мы пробовали. Неудобно.

Опять-же это не какое-то моё личное решение. Так решала вся команда.
...
Рейтинг: 0 / 0
Сеньтябрские тезисы Егора Бугаенко (+толстое видео)
    #39933493
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmaster
mayton
По личному наблюдению языки с динамикой (JScript/Python) имеют смысл на прототипах или на малых проектах.

Ну это решается просто. Большой проект делается из кучи маленьких.

Если ты не Project Owner то ты на проекте не принимаешь таких решений. Я имею в виду декомпозицию.
Ты - работаешь просто в команде над общей задачей. Ты не можешь просто сказать - "Эй посоны я тут
придумал давайте мы возьмем топор и расколем наш монолит на 4 части и всё будет круто!"

Если ты говоришь о том как НАДО-БЫ сделать или как ты бы ХОТЕЛ сделать - это совсем другая тема.
Но мой тезис остаётся по прежнему верный и для большой и для малой системы. Просто он стоит остро
для большой системы.

Кстати для микросервисов отсутствие явного типа на ендпоинте - это тоже поблема. Тоесть к типизации
вы все равно подойдете но через другую головную боль. Через SOAP/Swagger/GraphQL e.t.c.
...
Рейтинг: 0 / 0
Сеньтябрские тезисы Егора Бугаенко (+толстое видео)
    #39933496
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asv79
вынести стрингу в константу с говорящим названием?
как минимум это даст лучшее понимание кода и не нужно будет лазить потом кругом искать где оно еще используется ,а просто поменять 1 литерал в классе с константами
В вашем примере строковый литерал используется ровно один раз.
Или пример приводите адекватный или трусы оденьте.
...
Рейтинг: 0 / 0
Сеньтябрские тезисы Егора Бугаенко (+толстое видео)
    #39933497
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lleming
Очень точно подмечено. Обычно в таких случаях я вспоминаю django, где через один метод передается **args, **kwargs внутрь, и в дебаге мысли что за му**ки это придумали передавать все и вся в метод и там решать что с этим делать. Либо ты все знаешь про метод (считай читал его не один раз а лучше даже сам написал) либо офигеваеш от контекста который нужно держать в голове уже на третьем слое.

Я как-то предложил в одном проекте заменить все аргументы всех методов на Object (где нет примитивов).
Мой поинт был в том чтобы показать фронт-девелоперу как выглядит остутствие типов для Java и к какому
семантическому ужасу это приводит.
...
Рейтинг: 0 / 0
Сеньтябрские тезисы Егора Бугаенко (+толстое видео)
    #39933501
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
Ну это понятно, что мапы ни к чему хорошему не приводят.
Все как в субд - одна табла на всё из двух строковых колонок.
...
Рейтинг: 0 / 0
Сеньтябрские тезисы Егора Бугаенко (+толстое видео)
    #39933513
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дженерики в Java - это идея которая не была до конца продумана. Например в С++
вы можете генерализовать примитивы. А в Java - нет.
...
Рейтинг: 0 / 0
Сеньтябрские тезисы Егора Бугаенко (+толстое видео)
    #39933543
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton


Конструктор никогда не возвращает null в Java. Он или всегда отрабатывает или бросает неконтролируемое исключение
но в этом случае нам плевать на return потому что исключение выбросит нас раньше чем return.

просто не обратил внимание что это новый класс)
в любом случае так не делают,этот код не масштабируется и не читается
...
Рейтинг: 0 / 0
Сеньтябрские тезисы Егора Бугаенко (+толстое видео)
    #39933546
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov
asv79
вынести стрингу в константу с говорящим названием?
как минимум это даст лучшее понимание кода и не нужно будет лазить потом кругом искать где оно еще используется ,а просто поменять 1 литерал в классе с константами
В вашем примере строковый литерал используется ровно один раз.
Или пример приводите адекватный или трусы оденьте.

почитайте статью "магические цифры в джаве"
никто не хочет гадать что это за литерал ,кто он и откуда

любые "магические " цифры и буквы нужно выносить в константу и не важно 1 раз она используется или 10
сейчас 1 раз ,завтра 101
разработка любого джава приложения должна всегда быть нацелена на масштабируемость
...
Рейтинг: 0 / 0
Сеньтябрские тезисы Егора Бугаенко (+толстое видео)
    #39933549
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmaster
asv79
то первое ,второе если по этому адресу нет ничео -вернется нуль?

Этот чувак null предал анафеме, ты вообще ничего не понял и цепляешься ко всякой херне.

что значит предал анафеме нулл?)
отрицает его существование и смотрит как сыплется его кактус?)
...
Рейтинг: 0 / 0
Сеньтябрские тезисы Егора Бугаенко (+толстое видео)
    #39933561
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asv79
в любом случае так не делают
покажи как делают
...
Рейтинг: 0 / 0
Сеньтябрские тезисы Егора Бугаенко (+толстое видео)
    #39933566
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
asv79
в любом случае так не делают
покажи как делают

зачем я это буду показывать?)
мне за это деньги платят,плати покажу))
...
Рейтинг: 0 / 0
Сеньтябрские тезисы Егора Бугаенко (+толстое видео)
    #39933580
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asv79,
Тогда не болтай ерундой.
Ничего крамольного тут нет
return new RsPage( "/dir.xsl",
...
Рейтинг: 0 / 0
Сеньтябрские тезисы Егора Бугаенко (+толстое видео)
    #39933584
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asv79
PetroNotC Sharp
пропущено...
покажи как делают

зачем я это буду показывать?)
мне за это деньги платят,плати покажу))

Это прозвучало - по Егоровски!
...
Рейтинг: 0 / 0
Сеньтябрские тезисы Егора Бугаенко (+толстое видео)
    #39933590
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
asv79,
Тогда не болтай ерундой.
Ничего крамольного тут нет
return new RsPage( "/dir.xsl",

а что такое dir.xsl?
ты сходу скажешь что это?
что за литерал,откуда он взялся ,что он дает и за что отвечает

если человек замахнулся на спринг-то уж явно первым делом нужно свой код привести в божеский вид

про функционал я думаю там смысло нет говорить ,оно наверняка даже не компилируется)
...
Рейтинг: 0 / 0
25 сообщений из 170, страница 2 из 7
Форумы / Java [игнор отключен] [закрыт для гостей] / Сеньтябрские тезисы Егора Бугаенко (+толстое видео)
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]