|
Сеньтябрские тезисы Егора Бугаенко (+толстое видео)
|
|||
---|---|---|---|
#18+
mayton asv79 Код: java 1. 2.
а за такое надо руки отрубать. хардкод в 2020 году lol what? вообщем там и смысла смотреть нет дальше все лежит на поверхности Коде-ревью - это просто консенсус группы людей которые по джентльменски собрались и решили что такой код ПРИЕМЛЕМЫЙ для них и сопровождение его не доставит проблем. А теперь вопрос к тебе - как ты предлагаешь улучшить этот код? Не забывай также про KISS/YAGNI. Их никто не отменял. вынести стрингу в константу с говорящим названием? как минимум это даст лучшее понимание кода и не нужно будет лазить потом кругом искать где оно еще используется ,а просто поменять 1 литерал в классе с константами это первое ,второе если по этому адресу нет ничео -вернется нуль?значит -нужено обернуть в optional это просто рандомная строчка из его кода,если там глубже копать и провести тесты - я больше чем уверен автор сам удивится) ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2020, 12:53 |
|
Сеньтябрские тезисы Егора Бугаенко (+толстое видео)
|
|||
---|---|---|---|
#18+
crutchmaster lleming Но есть мнение что серебрянной пули нет и там свои пролемы. Для нормальной разработки есть необходимость уместно применять разные стили и подходы программирования. Но это не про яву, например, где просто не делали перегрузки операторов по каким-то своим религиозным причинам и пишут Код: java 1. 2.
Вместо Код: java 1.
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. (ошибка компиляции целочисленное деление но операнды не все целочисленные) .... ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2020, 12:56 |
|
Сеньтябрские тезисы Егора Бугаенко (+толстое видео)
|
|||
---|---|---|---|
#18+
asv79 mayton пропущено... Коде-ревью - это просто консенсус группы людей которые по джентльменски собрались и решили что такой код ПРИЕМЛЕМЫЙ для них и сопровождение его не доставит проблем. А теперь вопрос к тебе - как ты предлагаешь улучшить этот код? Не забывай также про KISS/YAGNI. Их никто не отменял. вынести стрингу в константу с говорящим названием? как минимум это даст лучшее понимание кода и не нужно будет лазить потом кругом искать где оно еще используется ,а просто поменять 1 литерал в классе с константами это первое ,второе если по этому адресу нет ничео -вернется нуль?значит -нужено обернуть в optional это просто рандомная строчка из его кода,если там глубже копать и провести тесты - я больше чем уверен автор сам удивится) Это ты что-то недоучил. Конструктор никогда не возвращает null в Java. Он или всегда отрабатывает или бросает неконтролируемое исключение но в этом случае нам плевать на return потому что исключение выбросит нас раньше чем return. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2020, 12:57 |
|
Сеньтябрские тезисы Егора Бугаенко (+толстое видео)
|
|||
---|---|---|---|
#18+
mayton Вобщем все кто хотели сложных типов Типизация это тоже такая палка о двух концах. Мне, например, каждый месяц говорят, что у нас тут все поменялось и надо считать не так, как считали всегда. В итоге весь красивый код написанный до этого регулярно обрастает всякими костылями и невольно начинаешь смотреть в сторону какой-нибудь динамики и парней с аккуратными бородками, беззаботно потягивающих свой смузи. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2020, 12:58 |
|
Сеньтябрские тезисы Егора Бугаенко (+толстое видео)
|
|||
---|---|---|---|
#18+
asv79 то первое ,второе если по этому адресу нет ничео -вернется нуль? Этот чувак null предал анафеме, ты вообще ничего не понял и цепляешься ко всякой херне. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2020, 13:00 |
|
Сеньтябрские тезисы Егора Бугаенко (+толстое видео)
|
|||
---|---|---|---|
#18+
crutchmaster Типизация это тоже такая палка о двух концах ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2020, 13:01 |
|
Сеньтябрские тезисы Егора Бугаенко (+толстое видео)
|
|||
---|---|---|---|
#18+
crutchmaster цепляешься ко всякой херне ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2020, 13:02 |
|
Сеньтябрские тезисы Егора Бугаенко (+толстое видео)
|
|||
---|---|---|---|
#18+
crutchmaster mayton Вобщем все кто хотели сложных типов Типизация это тоже такая палка о двух концах. Мне, например, каждый месяц говорят, что у нас тут все поменялось и надо считать не так, как считали всегда. В итоге весь красивый код написанный до этого регулярно обрастает всякими костылями и невольно начинаешь смотреть в сторону какой-нибудь динамики и парней с аккуратными бородками, беззаботно потягивающих свой смузи. По личному наблюдению языки с динамикой (JScript/Python) имеют смысл на прототипах или на малых проектах. Чем больше он будут расти в монолит (а это закономерный конец почти всех проектов) тем сильнее и сильнее будет влияние рандомных ошибок типизации. В самом деле. Кто в крупном проекте с динамикой сможет гарантировать что данный метод корректно вызовут при условии что компиллятор даже этого не знает. Сведенья о типах появятся в рантайме. Поэтому бородачи потягивающие смузи имеют большой технический долг. Или они - крайне безответсвтенны и их кажущаяся беззаботность имеет другую природу. Не техническую. Но мы об этом не будем говорить тк тема топика - Java. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2020, 13:02 |
|
Сеньтябрские тезисы Егора Бугаенко (+толстое видео)
|
|||
---|---|---|---|
#18+
lleming где какой результат ожидать? Да, не совсем удачный пример. a и b надо было просто присвоить 2 и 3. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2020, 13:05 |
|
Сеньтябрские тезисы Егора Бугаенко (+толстое видео)
|
|||
---|---|---|---|
#18+
mayton По личному наблюдению языки с динамикой (JScript/Python) имеют смысл на прототипах или на малых проектах. Ну это решается просто. Большой проект делается из кучи маленьких. mayton Кто в крупном проекте с динамикой сможет гарантировать Да никто там, конечно, ничего не будет гарантировать. Фича же такая, что пока не запустишь не узнаешь, там все имеет смысл тащить в рантайм, да и вообще подходы нужны совершенно другие. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2020, 13:09 |
|
Сеньтябрские тезисы Егора Бугаенко (+толстое видео)
|
|||
---|---|---|---|
#18+
crutchmaster mayton Вобщем все кто хотели сложных типов Типизация это тоже такая палка о двух концах. Мне, например, каждый месяц говорят, что у нас тут все поменялось и надо считать не так, как считали всегда. В итоге весь красивый код написанный до этого регулярно обрастает всякими костылями и невольно начинаешь смотреть в сторону какой-нибудь динамики и парней с аккуратными бородками, беззаботно потягивающих свой смузи. бытует мнение что обрастанием костылями это свойство человеческой натуры и оно, ортогонально понятиям ООП и Фуникционального программирования. Вопрос в том после того как код обрастет костылями что будет проще поправить. Костыли если код написан в функциональном стиле или ООП. maytonПо личному наблюдению языки с динамикой (JScript/Python) имеют смысл на прототипах или на малых проектах. Чем больше он будут расти в монолит (а это закономерный конец почти всех проектов) тем сильнее и сильнее будет влияние рандомных ошибок типизации. Очень точно подмечено. Обычно в таких случаях я вспоминаю django, где через один метод передается **args, **kwargs внутрь, и в дебаге мысли что за му**ки это придумали передавать все и вся в метод и там решать что с этим делать. Либо ты все знаешь про метод (считай читал его не один раз а лучше даже сам написал) либо офигеваеш от контекста который нужно держать в голове уже на третьем слое. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2020, 13:10 |
|
Сеньтябрские тезисы Егора Бугаенко (+толстое видео)
|
|||
---|---|---|---|
#18+
Некоторое время назад я пожалел что мы еще не на Скале. Мы часто используем generics. В части например таких Код: java 1.
Это удобно для конструирования всякой логики. Но беда подобных дженериков в том что они совершенно скрывают информацию о том что за величина лежит внутри. У нас были id-шники разных типов. Они все были int но несли разную семантику. ID-order, ID-local, ID-global, и эти-же величині (lnt,Long) использовались для меток времени timestamps. Понятно что ошибка программиста в толковании этого значения приводила сложным и трудно улавливаемым дефектам. А если-бы мы могли сделать дефиницию типа наподобие. Код: java 1.
То проблема хотя-бы констрейнтов в фазе например присвоения или comarison устранялась. Уходил целый пласт возможных ошибок. Появлялись какие-то гарантии что программист не сделает фигню. Оборачивать каждый Int обёрткой мы пробовали. Неудобно. Опять-же это не какое-то моё личное решение. Так решала вся команда. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2020, 13:12 |
|
Сеньтябрские тезисы Егора Бугаенко (+толстое видео)
|
|||
---|---|---|---|
#18+
crutchmaster mayton По личному наблюдению языки с динамикой (JScript/Python) имеют смысл на прототипах или на малых проектах. Ну это решается просто. Большой проект делается из кучи маленьких. Если ты не Project Owner то ты на проекте не принимаешь таких решений. Я имею в виду декомпозицию. Ты - работаешь просто в команде над общей задачей. Ты не можешь просто сказать - "Эй посоны я тут придумал давайте мы возьмем топор и расколем наш монолит на 4 части и всё будет круто!" Если ты говоришь о том как НАДО-БЫ сделать или как ты бы ХОТЕЛ сделать - это совсем другая тема. Но мой тезис остаётся по прежнему верный и для большой и для малой системы. Просто он стоит остро для большой системы. Кстати для микросервисов отсутствие явного типа на ендпоинте - это тоже поблема. Тоесть к типизации вы все равно подойдете но через другую головную боль. Через SOAP/Swagger/GraphQL e.t.c. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2020, 13:18 |
|
Сеньтябрские тезисы Егора Бугаенко (+толстое видео)
|
|||
---|---|---|---|
#18+
asv79 вынести стрингу в константу с говорящим названием? как минимум это даст лучшее понимание кода и не нужно будет лазить потом кругом искать где оно еще используется ,а просто поменять 1 литерал в классе с константами Или пример приводите адекватный или трусы оденьте. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2020, 13:22 |
|
Сеньтябрские тезисы Егора Бугаенко (+толстое видео)
|
|||
---|---|---|---|
#18+
lleming Очень точно подмечено. Обычно в таких случаях я вспоминаю django, где через один метод передается **args, **kwargs внутрь, и в дебаге мысли что за му**ки это придумали передавать все и вся в метод и там решать что с этим делать. Либо ты все знаешь про метод (считай читал его не один раз а лучше даже сам написал) либо офигеваеш от контекста который нужно держать в голове уже на третьем слое. Я как-то предложил в одном проекте заменить все аргументы всех методов на Object (где нет примитивов). Мой поинт был в том чтобы показать фронт-девелоперу как выглядит остутствие типов для Java и к какому семантическому ужасу это приводит. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2020, 13:24 |
|
Сеньтябрские тезисы Егора Бугаенко (+толстое видео)
|
|||
---|---|---|---|
#18+
mayton, Ну это понятно, что мапы ни к чему хорошему не приводят. Все как в субд - одна табла на всё из двух строковых колонок. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2020, 13:31 |
|
Сеньтябрские тезисы Егора Бугаенко (+толстое видео)
|
|||
---|---|---|---|
#18+
Дженерики в Java - это идея которая не была до конца продумана. Например в С++ вы можете генерализовать примитивы. А в Java - нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2020, 13:43 |
|
Сеньтябрские тезисы Егора Бугаенко (+толстое видео)
|
|||
---|---|---|---|
#18+
mayton Конструктор никогда не возвращает null в Java. Он или всегда отрабатывает или бросает неконтролируемое исключение но в этом случае нам плевать на return потому что исключение выбросит нас раньше чем return. просто не обратил внимание что это новый класс) в любом случае так не делают,этот код не масштабируется и не читается ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2020, 14:31 |
|
Сеньтябрские тезисы Егора Бугаенко (+толстое видео)
|
|||
---|---|---|---|
#18+
Basil A. Sidorov asv79 вынести стрингу в константу с говорящим названием? как минимум это даст лучшее понимание кода и не нужно будет лазить потом кругом искать где оно еще используется ,а просто поменять 1 литерал в классе с константами Или пример приводите адекватный или трусы оденьте. почитайте статью "магические цифры в джаве" никто не хочет гадать что это за литерал ,кто он и откуда любые "магические " цифры и буквы нужно выносить в константу и не важно 1 раз она используется или 10 сейчас 1 раз ,завтра 101 разработка любого джава приложения должна всегда быть нацелена на масштабируемость ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2020, 14:34 |
|
Сеньтябрские тезисы Егора Бугаенко (+толстое видео)
|
|||
---|---|---|---|
#18+
crutchmaster asv79 то первое ,второе если по этому адресу нет ничео -вернется нуль? Этот чувак null предал анафеме, ты вообще ничего не понял и цепляешься ко всякой херне. что значит предал анафеме нулл?) отрицает его существование и смотрит как сыплется его кактус?) ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2020, 14:36 |
|
Сеньтябрские тезисы Егора Бугаенко (+толстое видео)
|
|||
---|---|---|---|
#18+
asv79 в любом случае так не делают ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2020, 14:53 |
|
Сеньтябрские тезисы Егора Бугаенко (+толстое видео)
|
|||
---|---|---|---|
#18+
PetroNotC Sharp asv79 в любом случае так не делают зачем я это буду показывать?) мне за это деньги платят,плати покажу)) ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2020, 15:00 |
|
Сеньтябрские тезисы Егора Бугаенко (+толстое видео)
|
|||
---|---|---|---|
#18+
asv79, Тогда не болтай ерундой. Ничего крамольного тут нет return new RsPage( "/dir.xsl", ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2020, 15:18 |
|
Сеньтябрские тезисы Егора Бугаенко (+толстое видео)
|
|||
---|---|---|---|
#18+
asv79 PetroNotC Sharp пропущено... покажи как делают зачем я это буду показывать?) мне за это деньги платят,плати покажу)) Это прозвучало - по Егоровски! ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2020, 15:24 |
|
Сеньтябрские тезисы Егора Бугаенко (+толстое видео)
|
|||
---|---|---|---|
#18+
PetroNotC Sharp asv79, Тогда не болтай ерундой. Ничего крамольного тут нет return new RsPage( "/dir.xsl", а что такое dir.xsl? ты сходу скажешь что это? что за литерал,откуда он взялся ,что он дает и за что отвечает если человек замахнулся на спринг-то уж явно первым делом нужно свой код привести в божеский вид про функционал я думаю там смысло нет говорить ,оно наверняка даже не компилируется) ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2020, 15:33 |
|
|
start [/forum/topic.php?fid=59&msg=39933493&tid=2120883]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
176ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
60ms |
get tp. blocked users: |
1ms |
others: | 233ms |
total: | 517ms |
0 / 0 |