Подскажите, пжлст, куда пойти поучится на английском . Изначально думал поступать на программу Internet Programming and Development AEC от John Abbott , но она покрыта EMPLOI-QUÉBEC , получить подтверждение от агента возможно, но с определёнными усилиями. Сейчас начал думать о программе в Конкордии (Computer Science (GrDip)) https://www.concordia.ca/academics/grad … ploma.html. Если буду учится на Computer Science , то буду больше делать уклон в сторону Веб разработки (мне это интересно). Сегодня узнал, что есть программа в Vanier
Software Applications Specialist. В общем, меня интересует фул-тайм обучение и только на английском, в дальнейшем хочу работать в веб разработке. Посоветуйте, пжлст, каким путём лучше пойти. Возможно у кого-то есть подобный опыт.
Комментариев нет
Ответить
Для отправки комментария вам необходимо авторизоваться.
[quote="Ольга_":362xberj]
Вот вы упрямый, это же надо.
There’s a new feature in Java 8 called the Optional class which is supposed to cure NullPointerExceptions.
https://dzone.com/articles/java-8-optional-whats-point
В последний раз — цель Optional — избегание null values. Он создавался именно для этого. Optional.empty — это тоже состояние объекта и вы его проверяете, if Optional.isPresent(). Просто если вы используете Optional, у вас никогда не будет NullPointerException, потому что объект всегда есть, хоть и пустой.[/quote:362xberj]
The monad represents computations with a sequential structure: a monad defines what it means to chain operations together. This allows the programmer to build pipelines that process data in a series of steps (i.e. a series of actions applied to the data), in which each action is decorated with the additional processing rules provided by the monad.[2] A monad is defined by a return operator that creates values, and a bind operator used to link the actions in the pipeline; this definition must follow a set of axioms called monad laws, which are needed for the composition of actions in the pipeline to work properly.
https://en.wikipedia.org/wiki/Monad_(fu … rogramming)
Какой, блин, NullPointerException? При чем тут это, елки-палки. Вы указываете на частность как на суть решения. Прочитайте уже статью
[quote:362xberj]
Это не философский вопрос, это прямое назначение Optional — возвращать Optional в тех случаях, когда объекта может не быть. Не все постоянно проверяют if obj == null, NullPointerException — одно из самых распространенных исключений из-за ошибок программистов. Optional заставляет программстов всегда возвращать объект, хоть и пустой.
[/quote:362xberj]
Это давний программистский философский спор, null vs empty object. Погуглите, если интересно, я его воспроизводить не хочу
[quote:362xberj]
У меня нет, конечно, такого опыта, но функциональные языки я изучала год в универе, очень подробно, чисто функциональные SML и OCaml. Потом год писала на Scala, функциональные языки — это вообще моя слабость, Javа я знаю достаточно хорошо, поэтому я могу судить, насколько коряво или нет написаны библиотеки, поддерживающие функциональное программорование на Java. С С# не сравниваю, потому что С# не знаю.[/quote:362xberj]
Ну так о чем спор тогда
Про проблемы с legacy жавы только ленивый не говорит. Это не делает ее плохим, негодным языком, но периодически вызывает раздражение. Хоть и понятно, что по-другому, нормально делать нельзя, т.к. это потянет за собой такой ворох проблем, что все седеют сразу и заранее. Но раздражает.
А вот на Scala я да, смотрю. На ней под андроид можно писать, это прикольно
Что же вы меня в вики постоянно отправляете, я же говорю — я знаю фунцкиональное программирование, просто термин монада мы не использовали ни в универе, ни в терминологии джавы он не используется. Но я отлично знакома с этим концептом и понимаю, что вы имеете в виду. Я optional воспринимала с другой точки зрения, потому что, как я говорила, я использую его не только в контексте функционального программирования и все статьи, которые я читала указывают, что optional — это способ избегать null. Но я поняла ваш поинт. Хотя до сих пор не понятно, чем вас не устраивает optional как монада.
Я не знаю споров о null. Для меня однозначно — пишете public method — избегайте возвращать null.
[quote="Ольга_":39j6az08]Хотя до сих пор не понятно, чем вас не устраивает optional как монада. [/quote:39j6az08]
Тяжеловесный очень, синтаксически. Ну, в сравнении. Хоть я и понимаю, что по-другому сделать не могли
У меня в юности был опыт с VB, сразу после плюсов, ради денег, и его многословность нанесла мне неизлечимую травму:)
[quote="Ольга_":39j6az08]Я не знаю споров о null. Для меня однозначно — пишете public method — избегайте возвращать null.[/quote:39j6az08]
а вы погуглите:) У обеих сторон есть свои резоны, не все так однозначно. К примеру, одно из рассуждений — нулл это отсутствие обьекта, четкое свидетельство что что-то пошло не так, и надо перключаться на обработку этой ситуации. А пустой обьект — все-таки обьект, и если начать его использовать, то может получиться черти че. Кидать же исключение — это дорого, а делать проверку а не пустой ли обьект бессмысленно, т.к. точно так же можно проверить на нулл
Там, в общем, давний спор, с достойными аргументами от каждой из сторон
[quote="loco":2x4koc7i]
а вы погуглите:) У обеих сторон есть свои резоны, не все так однозначно. К примеру, одно из рассуждений — нулл это отсутствие обьекта, четкое свидетельство что что-то пошло не так, и надо перключаться на обработку этой ситуации. А пустой обьект — все-таки обьект, и если начать его использовать, то может получиться черти че. Кидать же исключение — это дорого, а делать проверку а не пустой ли обьект бессмысленно, т.к. точно так же можно проверить на нулл
Там, в общем, давний спор, с достойными аргументами от каждой из сторон[/quote:2x4koc7i]
Мне сразу непонятно — что значит что-то пошло не так, если нет объекта? У вас есть метод, который делает запрос в базу данных по определенным критериям. Но ни один объект этим критериям не удовлетворяет. Все идет так, просто нечего возвращать. Поэтому я декларирую этот метод как возвращающий Optional, предупреждая этим клиента, который будет использовать метод, что объект может отсутствовать. Теперь какой бы слабый и невнимательный программист не писал код, который будет использовать мой метод, его код никогда не выкинет NullPointerException.
А что может получиться черти че, если я возвращаю пустой объект Optional? Я пользуюсь этим довольно давно, ни от одного программиста нареканий не услышала, наоборот, тим лид в прошлой компании, который узнал о существовании Optional из моего кода на код ревью
, посоветовал всем впредь использовать этот класс. И кстати один из первых моих багов, которые мне дали фиксить в той компании — это NullPointerException.
Делать проверку на пустой объект не бессмысленно — чтобы получить объект из этого Optional, его нужно проверить, эту проверку программист напишет автоматически, а вот на null часто проверять забывают. Или код изменился — изначально метод не мог возвращать null, по логике всегда был объект. Позже метод подправили, добавили null, а вызывающие методы проверить забыли — и словили NullPointerException. Все-таки с null надо быть предельно внимательным, это удается далеко не всем, даже опытный программист может где-то упустить проверку.
Вы таки хотите подискутировать!:)
дисклаймер — я не фанат ни нулла, ни пустого обьекта, ни монад, ситуации всякие бывают.
[quote="Ольга_":2hpycice]
Мне сразу непонятно — что значит что-то пошло не так, если нет объекта? У вас есть метод, который делает запрос в базу данных по определенным критериям. Но ни один объект этим критериям не удовлетворяет. Все идет так, просто нечего возвращать. Поэтому я декларирую этот метод как возвращающий Optional, предупреждая этим клиента, который будет использовать метод, что объект может отсутствовать. Теперь какой бы слабый и невнимательный программист не писал код, который будет использовать мой метод, его код никогда не выкинет NullPointerException.
А что может получиться черти че, если я возвращаю пустой объект Optional? Я пользуюсь этим довольно давно, ни от одного программиста нареканий не услышала, наоборот, тим лид в прошлой компании, который узнал о существовании Optional из моего кода на код ревью
, посоветовал всем впредь использовать этот класс. И кстати один из первых моих багов, которые мне дали фиксить в той компании — это NullPointerException.
Делать проверку на пустой объект не бессмысленно — чтобы получить объект из этого Optional, его нужно проверить, эту проверку программист напишет автоматически, а вот на null часто проверять забывают. Или код изменился — изначально метод не мог возвращать null, по логике всегда был объект. Позже метод подправили, добавили null, а вызывающие методы проверить забыли — и словили NullPointerException. Все-таки с null надо быть предельно внимательным, это удается далеко не всем, даже опытный программист может где-то упустить проверку.[/quote:2hpycice]
1. Суть монад как раз в том и заключается, что мы делаем chaining methods безо всяких проверок. Если вы делаете проверку, то, имхо, без разницы что проверять — empty or null. Ну я не очень понимаю, почему дев обязательно проверит Optional на пустоту, а про проверку на нулл забудет
2. Если проверки нет, то будет либо NPE(если не Optional), либо.. непонятно что. Я не знаю, что произойдет, если мы продолжим работать с Optional, как будто он не пустой. С другой стороны, есть мнение, что с толковой системой отлова исключений если NPE выбросится раньше оно будет отловлено QA и починено, а с пустым обьектом ошибка м.б. трудно воспроизводима/отслеживаема, и вылезет позже.
3. Если метод был модифицирован, так что стал возвращать нулл — ну, для этого тесты есть. Единственно, конечно, если метод много где используется — все не отследишь, но в этом случае его и менять не стоит, лучше новый добавить/перегрузить. Open for extension, closed for modification, вопщем
Как-то так:) Хотя основной спор разворачивался вокруг концепции "раз уж у нас ООП, а нулл не обьект, то надо нулл заменить пустым обьектом, т.к. это противоречит парадигме"
[quote="loco":2pjr4jyi]
1. Суть монад как раз в том и заключается, что мы делаем chaining methods безо всяких проверок. Если вы делаете проверку, то, имхо, без разницы что проверять — empty or null. Ну я не очень понимаю, почему дев обязательно проверит Optional на пустоту, а про проверку на нулл забудет
2. Если проверки нет, то будет либо NPE(если не Optional), либо.. непонятно что. Я не знаю, что произойдет, если мы продолжим работать с Optional, как будто он не пустой. С другой стороны, есть мнение, что с толковой системой отлова исключений если NPE выбросится раньше оно будет отловлено QA и починено, а с пустым обьектом ошибка м.б. трудно воспроизводима/отслеживаема, и вылезет позже.
3. Если метод был модифицирован, так что стал возвращать нулл — ну, для этого тесты есть. Единственно, конечно, если метод много где используется — все не отследишь, но в этом случае его и менять не стоит, лучше новый добавить/перегрузить. Open for extension, closed for modification, вопщем
Как-то так:) Хотя основной спор разворачивался вокруг концепции "раз уж у нас ООП, а нулл не обьект, то надо нулл заменить пустым обьектом, т.к. это противоречит парадигме"[/quote:2pjr4jyi]
+1 как говориться.
коротко и по сути
(хотя лично я считаю, что null object -это вредный antipattern). Null — это прекрасно. Это четко говорит, что объекта нет, без альтернативных толкований состояния объекта. и нифига принципы ооп не нарушается, ибо null — это отсутствие объекта. а пустой объект — это таки объект. Две больших разницы.
[quote="елкапалка":3lsbycu3]Null — это прекрасно. Это четко говорит, что объекта нет, без альтернативных толкований состояния объекта. и нифига принципы ооп не нарушается, ибо null — это отсутствие объекта. а пустой объект — это таки объект. Две больших разницы.[/quote:3lsbycu3]
Эти все аргументы уже многократно обсасывались, спор уже как бы не 10 лет идет:)))
Забудьте уже про монады, естественно, они не могут быть null, потому что на них вызываются методы. Речь об обычном программировании, ооп или процедурное. Я считаю, возвращение null — это bad practice and should be avoided. И со мной согласны лучшие программисты, работающие в Гугле, мне этого достаточно, а остальные пусть спорят.
[quote="Ольга_":1j1a7x7c]Забудьте уже про монады, естественно, они не могут быть null, потому что на них вызываются методы. Речь об обычном программировании, ооп или процедурное. Я считаю, возвращение null — это bad practice and should be avoided. И со мной согласны лучшие программисты, работающие в Гугле, мне этого достаточно, а остальные пусть спорят.
[/quote:1j1a7x7c]
Ну а разработчики жавы/с++/с# и кучи других языков не согласны, и упорно вставляют null в свои языки
и на каждого лучшего программиста из гугла найдется не менее лучший ис мс/оракла и проч
Откуда такой обскурантизм и святая уверенность в истине? Спору, повторюсь, уже много лет, и обе стороны имеют свои резоны. Вы, повторюсь, изучите их, чтоб иметь полную картину, а потом уже высказывайтесь так безапелляционно:)
Например,
http://stackoverflow.com/questions/1626 … pty-object
https://softwareengineering.stackexchan … re-the-ret
https://www.codeproject.com/Articles/79 … ist-Instea
http://www.yegor256.com/2014/05/13/why-null-is-bad.html
И т.д.
Как и любой инструмент, какие-то языковые фичи могут быть использованы и с толком, и по-дурацки. Надо уметь ими пользоваться
[quote="loco":b8bxe9f4][quote="Ольга_":b8bxe9f4]Забудьте уже про монады, естественно, они не могут быть null, потому что на них вызываются методы. Речь об обычном программировании, ооп или процедурное. Я считаю, возвращение null — это bad practice and should be avoided. И со мной согласны лучшие программисты, работающие в Гугле, мне этого достаточно, а остальные пусть спорят.
[/quote:b8bxe9f4]
Ну а разработчики жавы/с++/с# и кучи других языков не согласны, и упорно вставляют null в свои языки
и на каждого лучшего программиста из гугла найдется не менее лучший ис мс/оракла и проч
Откуда такой обскурантизм и святая уверенность в истине? Спору, повторюсь, уже много лет, и обе стороны имеют свои резоны. Вы, повторюсь, изучите их, чтоб иметь полную картину, а потом уже высказывайтесь так безапелляционно:)
Например,
http://stackoverflow.com/questions/1626 … pty-object
https://softwareengineering.stackexchan … re-the-ret
https://www.codeproject.com/Articles/79 … ist-Instea
http://www.yegor256.com/2014/05/13/why-null-is-bad.html
И т.д.
Как и любой инструмент, какие-то языковые фичи могут быть использованы и с толком, и по-дурацки. Надо уметь ими пользоваться[/quote:b8bxe9f4]
У меня полная картина. Я могу принять одну сторону спора и держаться ее?
Java разработчики как раз тоже рекомендуют использовать Optional, чтобы избегать NullPointerExceptions.
http://www.oracle.com/technetwork/artic … 75753.html
[quote="loco":jzhv47os][quote="Ольга_":jzhv47os]Забудьте уже про монады, естественно, они не могут быть null, потому что на них вызываются методы. Речь об обычном программировании, ооп или процедурное. Я считаю, возвращение null — это bad practice and should be avoided. И со мной согласны лучшие программисты, работающие в Гугле, мне этого достаточно, а остальные пусть спорят.
[/quote:jzhv47os]
Ну а разработчики жавы/с++/с# и кучи других языков не согласны, и упорно вставляют null в свои языки
и на каждого лучшего программиста из гугла найдется не менее лучший ис мс/оракла и проч
Откуда такой обскурантизм и святая уверенность в истине? Спору, повторюсь, уже много лет, и обе стороны имеют свои резоны. Вы, повторюсь, изучите их, чтоб иметь полную картину, а потом уже высказывайтесь так безапелляционно:)
Например,
http://stackoverflow.com/questions/1626 … pty-object
https://softwareengineering.stackexchan … re-the-ret
https://www.codeproject.com/Articles/79 … ist-Instea
http://www.yegor256.com/2014/05/13/why-null-is-bad.html
И т.д.
Как и любой инструмент, какие-то языковые фичи могут быть использованы и с толком, и по-дурацки. Надо уметь ими пользоваться[/quote:jzhv47os]
Я прошлась по вашим ссылкам. Спор там совсем не о том. Там, насколько я поняла, речь идет о том, возвращать ли null или пустой объект, то есть new Object(). О наличии подобного спора я даже была не в курсе. Естественно, в таком случае никаких пустых объектов создавать не надо — возвращать null. Мне даже в голову не могла прийти такая идея с пустыми объектами. В случае collections только — возвращать пустой лист/array… new ArrayList<>(), в случае с объектами — null.
Но я веду речь о том, что Джава 8 дает альтернативу — возвращается пустой объект особо класса, который предназначен как раз указывать на то, что объект внутри него может отсутствовать. Optional — это wrapper искомого объекта. То есть если декларируем метод не как
public Object getObject()
а
public Optional<Object> getObject()
Эта декларация говорит о том, что искомого объекта может не быть, то есть возвращается либо Optional.of(Object) or Optional.empty(). При этом никаких пустых искомых объектов (типа new Object()) не создается. Потом проверяется, есть ли объект в Optional:
if (optional.isPresent()) {
Object obj = optional.get();
}
else {
you know object doesn’t exist
}
[quote="Ольга_":o42aqaft]
У меня полная картина. Я могу принять одну сторону спора и держаться ее? [/quote:o42aqaft]
Ну, если картина полная, как можно держаться только одной стороны?
Вы ж программист, должны критически оценивать любые серебряные пули(коих, как известно, нет). Вот эти вот решения — "я для простоты буду делать только так" они не работают, т.к. программирование — сложное дело
[quote="Ольга_":o42aqaft]
Java разработчики как раз тоже рекомендуют использовать Optional, чтобы избегать NullPointerExceptions.
http://www.oracle.com/technetwork/artic … 75753.html[/quote:o42aqaft]
жава разработчикам веры нет
они когда-то решили, что все функции д.б. виртуальными
Собссно, вся вот эта концепция разработки под дурака — чтоб не дай бог не поломал чего, давайте мы ему запретим пользоваться "опасными" фичами языка меня удручает. Ну, не нанимайте дураков. Или используйте Go, как гугл-программисты. Или js;)
Мне вообще странно видеть жалобы на NPE. Если программа от одного NPE крашится целиком, так Optional тут не поможет, это в консерватории надо что-то менять. Как вообще использование Optional может защитить от хреново спроектированной системы?
[quote="Ольга_":2hafk661]
Я прошлась по вашим ссылкам. Спор там совсем не о том. Там, насколько я поняла, речь идет о том, возвращать ли null или пустой объект, то есть new Object(). О наличии подобного спора я даже была не в курсе. Естественно, в таком случае никаких пустых объектов создавать не надо — возвращать null.
[/quote:2hafk661]
Ха
Именно это и оспаривается, и не так однозначно
К примеру, если возвращать строку, часто удобнее возвращать не нулл, а string.Empty — это безопасно, т.к. string is immutable, а string.Empty — это статическая переменная, существующая в единственном экземпляре.
[quote:2hafk661]Мне даже в голову не могла прийти такая идея с пустыми объектами. В случае collections только — возвращать пустой лист/array… new ArrayList<>(), в случае с объектами — null.[/quote:2hafk661]
Я-то могу согласиться, но вообразите ситуацию, когда функция вызывается в долгом цикле. Что, каждый раз создавать новый лист? Тоже ведь неоднозначно
[quote:2hafk661]Но я веду речь о том, что Джава 8 дает альтернативу — возвращается пустой объект особо класса, который предназначен как раз указывать на то, что объект внутри него может отсутствовать. Optional — это wrapper искомого объекта. То есть если декларируем метод не как
public Object getObject()
а
public Optional<Object> getObject()
Эта декларация говорит о том, что искомого объекта может не быть, то есть возвращается либо Optional.of(Object) or Optional.empty(). При этом никаких пустых искомых объектов (типа new Object()) не создается. Потом проверяется, есть ли объект в Optional:
if (optional.isPresent()) {
Object obj = optional.get();
}
else {
you know object doesn’t exist
}[/quote:2hafk661]
Да я понимаю:) Таких абстракций хватает, взять ту же WeakReference
Суть ведь в том, что вы _все равно делаете проверку_
Что если я напишу так — getObject().get().doSmth() ?
Будет все тот же NPE
[quote="loco":1lru9oen]
Ну, если картина полная, как можно держаться только одной стороны?
Вы ж программист, должны критически оценивать любые серебряные пули(коих, как известно, нет). Вот эти вот решения — "я для простоты буду делать только так" они не работают, т.к. программирование — сложное дело
жава разработчикам веры нет
они когда-то решили, что все функции д.б. виртуальными
Собссно, вся вот эта концепция разработки под дурака — чтоб не дай бог не поломал чего, давайте мы ему запретим пользоваться "опасными" фичами языка меня удручает. Ну, не нанимайте дураков. Или используйте Go, как гугл-программисты. Или js;)
Мне вообще странно видеть жалобы на NPE. Если программа от одного NPE крашится целиком, так Optional тут не поможет, это в консерватории надо что-то менять. Как вообще использование Optional может защитить от хреново спроектированной системы?[/quote:1lru9oen]
, и подобные споры для меня — это детская болтовня в песочнице, потому что обсуждать, что возможно нужно вернуть пустой объект — это бред и не стоит моего внимания. Если есть альтернатива как String.empty — возвращайте, в Джаве такого нет, но можно вернуть пустую строку "".
Я не просто программист — я хороший программист
Optional помогает, я уже писала об этом, проверка каждый раз на null — надо быть очень внимательным, человеческий фактор никто не отменял, а вот вызвать get() на Optional, не проверив его — то гнать надо таких программистов, потому что он на то и Optional, что кричит своим названием — будь внимателен, я могу быть пустым!
ну это уже вообще ни в какие ворота.
[quote:y0nklahs]
На C# вообще нельзя писать приложения для мобильных, но я же не говорю, какой корявый язык этот ваш C#.[/quote:y0nklahs]
XAMARIN!!!
[quote="loco":3lrq33zr]
Я-то могу согласиться, но вообразите ситуацию, когда функция вызывается в долгом цикле. Что, каждый раз создавать новый лист? Тоже ведь неоднозначно[/quote:3lrq33zr]
О flyweight pattern слышали? Но тут даже так сильно мудрить не надо — создайте один пустой лист и возвращайте, если он впоследствии не будет модифицироваться. В Джаве для таких случаев есть Collections.emptyList(), который нельзя модифицировать.
[quote="loco":3lrq33zr]Да я понимаю:) Таких абстракций хватает, взять ту же WeakReference
Суть ведь в том, что вы _все равно делаете проверку_
Что если я напишу так — getObject().get().doSmth() ?
Будет все тот же NPE[/quote:3lrq33zr]
Про кривых программистов я уже писала — гнать.
[quote="kuzne4ik537":1yn13cpp]ну это уже вообще ни в какие ворота.
Я лично против С# ничего не имею.
[quote:1yn13cpp]
На C# вообще нельзя писать приложения для мобильных, но я же не говорю, какой корявый язык этот ваш C#.[/quote:1yn13cpp]
XAMARIN!!![/quote:1yn13cpp]
Извините, погорячилась. Но это экзотика, согласитесь.
[quote="Ольга_":hl90rsjg][quote="kuzne4ik537":hl90rsjg]ну это уже вообще ни в какие ворота.
Я лично против С# ничего не имею.[/quote:hl90rsjg]
[quote:hl90rsjg]
На C# вообще нельзя писать приложения для мобильных, но я же не говорю, какой корявый язык этот ваш C#.[/quote:hl90rsjg]
XAMARIN!!![/quote:hl90rsjg]
Извините, погорячилась. Но это экзотика, согласитесь.
уже не экзотика, но насколько я смотрю по рынку, все больше и больше требуется разработчиков
я сам на c# не работаю, но в сравнении с джавой он мне понравился в разы больше. Чего тоько стоит linq
[quote="kuzne4ik537":2c3w3f0g]я сам на c# не работаю, но в сравнении с джавой он мне понравился в разы больше. Чего тоько стоит linq[/quote:2c3w3f0g]
То есть linq лучше джавовского stream по вашему мнению? Наверное, придется изучить C#.
[quote="Ольга_":2pwckpgh]
, и подобные споры для меня — это детская болтовня в песочнице, потому что обсуждать, что возможно нужно вернуть пустой объект — это бред и не стоит моего внимания. Если есть альтернатива как String.empty — возвращайте, в Джаве такого нет, но можно вернуть пустую строку "".
Я не просто программист — я хороший программист
[/quote:2pwckpgh]
Это ничего, это пройдет
Когда я был 27-летним супер программистом с примерно 5-6 летним опытом, я так же думал
[quote:2pwckpgh]Optional помогает, я уже писала об этом, проверка каждый раз на null — надо быть очень внимательным, человеческий фактор никто не отменял, а вот вызвать get() на Optional, не проверив его — то гнать надо таких программистов, потому что он на то и Optional, что кричит своим названием — будь внимателен, я могу быть пустым!
[/quote:2pwckpgh]
Я все еще не вижу разницы между проверкой на нулл обьекта, или проверкой на нулл обьекта внутри Optional
Точно так же можно гнать программистов, не проверяющих на нулл, тем более что intellij об этом предупредит, да и @Nullable никто не отменял
[quote="Ольга_":2nkhpkxd]Наверное, придется изучить C#.
[/quote:2nkhpkxd]
не стоит… а то в жаве разочаруетесь.
и все. крушение мечт работать в гугле. они там на шарпе не пишут…
[quote="Ольга_":3bm0o0bb]
О flyweight pattern слышали? Но тут даже так сильно мудрить не надо — создайте один пустой лист и возвращайте, если он впоследствии не будет модифицироваться. В Джаве для таких случаев есть Collections.emptyList(), который нельзя модифицировать.
[/quote:3bm0o0bb]
Ну вы-то его сразу не предложили:) Т.е., не подумали, "а что если", а предложили сходу неоптимальное и несколько опасное решение, эрго гнать вас надо:)
[quote="loco":5v02j1lg]
Это ничего, это пройдет
Когда я был 27-летним супер программистом с примерно 5-6 летним опытом, я так же думал[/quote:5v02j1lg]
Это не только я думаю, так думают все, с кем я работала/работаю. Существуют же объективные показатели уровня программиста.
[quote:5v02j1lg]
Я все еще не вижу разницы между проверкой на нулл обьекта, или проверкой на нулл обьекта внутри Optional
Точно так же можно гнать программистов, не проверяющих на нулл, тем более что intellij об этом предупредит, да и @Nullable никто не отменял[/quote:5v02j1lg]
Не видите — значит не парьтесь, слушайтесь intellij.
[quote="kuzne4ik537":3vm68595]я сам на c# не работаю, но в сравнении с джавой он мне понравился в разы больше. Чего тоько стоит linq[/quote:3vm68595]
сишарп очень удобный для погромиста язык, не отнять
[quote="елкапалка":14w267z0][quote="Ольга_":14w267z0]Наверное, придется изучить C#.
[/quote:14w267z0]
не стоит… а то в жаве разочаруетесь.
и все. крушение мечт работать в гугле. они там на шарпе не пишут…[/quote:14w267z0]
Стоит или не стоит и какие мечты что разрушит — это мне лучше знать. И по поводу разочарований — не торопитесь, я тут почитала статью о сравнении linq и stream и не все так однозначно, по крайней мере, автор не считает, что stream уступает linq.
[quote="loco":3ssge6cg][quote="Ольга_":3ssge6cg]
О flyweight pattern слышали? Но тут даже так сильно мудрить не надо — создайте один пустой лист и возвращайте, если он впоследствии не будет модифицироваться. В Джаве для таких случаев есть Collections.emptyList(), который нельзя модифицировать.
[/quote:3ssge6cg]
Ну вы-то его сразу не предложили:) Т.е., не подумали, "а что если", а предложили сходу неоптимальное и несколько опасное решение, эрго гнать вас надо:)[/quote:3ssge6cg]
Я вообще не предлагала конкретную имплементацию, я сказала, что если лист пустой — возвращайте пустой лист, а не null, а уж как это будет вополощено в коде — это уже кто на что способен.
[quote="Ольга_":1lw1c3mk][quote="loco":1lw1c3mk]
Это ничего, это пройдет
[/quote:1lw1c3mk]
Когда я был 27-летним супер программистом с примерно 5-6 летним опытом, я так же думал[/quote:1lw1c3mk]
Это не только я думаю, так думают все, с кем я работала/работаю. Существуют же объективные показатели уровня программиста.
Я про безапелляционность
[quote:1lw1c3mk][quote:1lw1c3mk]
Я все еще не вижу разницы между проверкой на нулл обьекта, или проверкой на нулл обьекта внутри Optional
Точно так же можно гнать программистов, не проверяющих на нулл, тем более что intellij об этом предупредит, да и @Nullable никто не отменял[/quote:1lw1c3mk]
Не видите — значит не парьтесь, слушайтесь intellij.[/quote:1lw1c3mk]
Вы нелогичны
Проверка на нулл — зло, проверка на isPresent() нет. Хотя и там, и там — проверка
Аргументация не очень, прямо скажем. Если программиста можно натаскать на проверку одного, то что мешает натаскать на проверку другого?
[quote="Ольга_":2zq71w40][quote="loco":2zq71w40][quote="Ольга_":2zq71w40]
О flyweight pattern слышали? Но тут даже так сильно мудрить не надо — создайте один пустой лист и возвращайте, если он впоследствии не будет модифицироваться. В Джаве для таких случаев есть Collections.emptyList(), который нельзя модифицировать.
[/quote:2zq71w40]
Ну вы-то его сразу не предложили:) Т.е., не подумали, "а что если", а предложили сходу неоптимальное и несколько опасное решение, эрго гнать вас надо:)[/quote:2zq71w40]
Я вообще не предлагала конкретную имплементацию, я сказала, что если лист пустой — возвращайте пустой лист, а не null, а уж как это будет вополощено в коде — это уже кто на что способен.[/quote:2zq71w40]
Я это и называю — не подумали, а что если
Непрофессионально, думать надо всегда, не полагаясь на заученные паттерны. Разница-то есть между созданием обьекта и обращением к уже существующей статической immutable коллекции.
[quote="Ольга_":1h6ayfb9][quote="елкапалка":1h6ayfb9][quote="Ольга_":1h6ayfb9]Наверное, придется изучить C#.
[/quote:1h6ayfb9]
не стоит… а то в жаве разочаруетесь.
и все. крушение мечт работать в гугле. они там на шарпе не пишут…[/quote:1h6ayfb9]
Стоит или не стоит и какие мечты что разрушит — это мне лучше знать. И по поводу разочарований — не торопитесь, я тут почитала статью о сравнении linq и stream и не все так однозначно, по крайней мере, автор не считает, что stream уступает linq.[/quote:1h6ayfb9]
У них разница в 7 лет разработки
Конечно, уступает
[quote="loco":34cbd879][quote="Ольга_":34cbd879][quote="loco":34cbd879]
Это ничего, это пройдет
[/quote:34cbd879]
Когда я был 27-летним супер программистом с примерно 5-6 летним опытом, я так же думал[/quote:34cbd879]
Это не только я думаю, так думают все, с кем я работала/работаю. Существуют же объективные показатели уровня программиста.
Я про безапелляционность
[quote:34cbd879][quote:34cbd879]
Я все еще не вижу разницы между проверкой на нулл обьекта, или проверкой на нулл обьекта внутри Optional
Точно так же можно гнать программистов, не проверяющих на нулл, тем более что intellij об этом предупредит, да и @Nullable никто не отменял[/quote:34cbd879]
Не видите — значит не парьтесь, слушайтесь intellij.[/quote:34cbd879]
Вы нелогичны
Проверка на нулл — зло, проверка на isPresent() нет. Хотя и там, и там — проверка
Аргументация не очень, прямо скажем. Если программиста можно натаскать на проверку одного, то что мешает натаскать на проверку другого?[/quote:34cbd879]
Я вам уже объяснила, не понимаете — я больше ничего сделать не могу. Возможно, со временем поймете разницу. А нет — так забейте.
[quote="loco":3fdynlgv][quote="Ольга_":3fdynlgv][quote="loco":3fdynlgv][quote="Ольга_":3fdynlgv]
О flyweight pattern слышали? Но тут даже так сильно мудрить не надо — создайте один пустой лист и возвращайте, если он впоследствии не будет модифицироваться. В Джаве для таких случаев есть Collections.emptyList(), который нельзя модифицировать.
[/quote:3fdynlgv]
Ну вы-то его сразу не предложили:) Т.е., не подумали, "а что если", а предложили сходу неоптимальное и несколько опасное решение, эрго гнать вас надо:)[/quote:3fdynlgv]
Я вообще не предлагала конкретную имплементацию, я сказала, что если лист пустой — возвращайте пустой лист, а не null, а уж как это будет вополощено в коде — это уже кто на что способен.[/quote:3fdynlgv]
Я это и называю — не подумали, а что если
Непрофессионально, думать надо всегда, не полагаясь на заученные паттерны. Разница-то есть между созданием обьекта и обращением к уже существующей статической immutable коллекции.[/quote:3fdynlgv]
Не надо меня учить профессионализму. Написав new ArratList<>() я показала, что имею в виду под пустым листом, после того как поняла, что тут многие вещи понимают по-другому, после спора о создании пустых объектов. Collections.emptyList() тоже создает объект, просто один раз и лист не модифицируется. То есть это уже частный случай создания листов, меня не интересовали частные случаи, мне было нужно лишь показать, что я понимаю под пустым листом в доступной для всех, не только джаваистов, форме. Не надо придираться.
[quote="Ольга_":3vb35csv]
Я вам уже объяснила, не понимаете — я больше ничего сделать не могу. Возможно, со временем поймете разницу. А нет — так забейте.[/quote:3vb35csv]
Что, стыдно признаться, что и сами понимаете, что разницы никакой?
пс Девушка. Я писал код еще когда вы еще в детсад ходили. Не надо вот этого "со временем поймете разницу", некрасиво.
[quote="loco":1ojwhwwe][quote="Ольга_":1ojwhwwe][quote="елкапалка":1ojwhwwe][quote="Ольга_":1ojwhwwe]Наверное, придется изучить C#.
[/quote:1ojwhwwe]
не стоит… а то в жаве разочаруетесь.
и все. крушение мечт работать в гугле. они там на шарпе не пишут…[/quote:1ojwhwwe]
Стоит или не стоит и какие мечты что разрушит — это мне лучше знать. И по поводу разочарований — не торопитесь, я тут почитала статью о сравнении linq и stream и не все так однозначно, по крайней мере, автор не считает, что stream уступает linq.[/quote:1ojwhwwe]
У них разница в 7 лет разработки
Конечно, уступает[/quote:1ojwhwwe]
Уступала, согласна. Но мы живем сегодня, в сейчас есть Java 8 со streamом, который, по мнению людей, знающих и C#, и Java, C# не уступает. "Последние станут первыми".
[quote="loco":2dblphxe][quote="Ольга_":2dblphxe]
Я вам уже объяснила, не понимаете — я больше ничего сделать не могу. Возможно, со временем поймете разницу. А нет — так забейте.[/quote:2dblphxe]
Что, стыдно признаться, что и сами понимаете, что разницы никакой?
пс Девушка. Я писал код еще когда вы еще в детсад ходили. Не надо вот этого "со временем поймете разницу", некрасиво.[/quote:2dblphxe]
Я вам на нескольких страницах написала, какая разница, статьи компетентных людей приводила — но для вас разницы нет.
Мужчина, я за последние 3 года со столькими программистами поработала, столько сеньоров повидала, которых пришлось учить писать чистый код и объяснять, что такое хорошо, и что такое плохо, что мне ваши года до лампочки, я сужу не по опыту, а по знаниям.
[quote="Ольга_":3wcjrw8c]
Не надо меня учить профессионализму. Написав new ArratList<>() я показала, что имею в виду под пустым листом, после того как поняла, что тут многие вещи понимают по-другому, после спора о создании пустых объектов. Collections.emptyList() тоже создает объект, просто один раз и лист не модифицируется. То есть это уже частный случай создания листов, меня не интересовали частные случаи, мне было нужно лишь показать, что я понимаю под пустым листом в доступной для всех, не только джаваистов, форме. Не надо придираться.[/quote:3wcjrw8c]
А почему б не поучить, если вы не видите особой разницы между созданием кучи обьектов в цикле и созданием immutable обьекта один раз?
Не бывает мелочей в программизме, бывают только допустимые flaws
[quote="loco":3mzj09c1][quote="Ольга_":3mzj09c1]
Не надо меня учить профессионализму. Написав new ArratList<>() я показала, что имею в виду под пустым листом, после того как поняла, что тут многие вещи понимают по-другому, после спора о создании пустых объектов. Collections.emptyList() тоже создает объект, просто один раз и лист не модифицируется. То есть это уже частный случай создания листов, меня не интересовали частные случаи, мне было нужно лишь показать, что я понимаю под пустым листом в доступной для всех, не только джаваистов, форме. Не надо придираться.[/quote:3mzj09c1]
А почему б не поучить, если вы не видите особой разницы между созданием кучи обьектов в цикле и созданием immutable обьекта один раз?
Не бывает мелочей в программизме, бывают только допустимые flaws[/quote:3mzj09c1]
Кто вам сказал, что я не вижу разницу? Хватит фантазировать.
[quote="loco":loych5mw][quote="Ольга_":loych5mw]
Не надо меня учить профессионализму. Написав new ArratList<>() я [b:loych5mw]показала, что имею в виду под пустым листом, после того как поняла, что тут многие вещи понимают по-другому[/b:loych5mw], после спора о создании пустых объектов. Collections.emptyList() тоже создает объект, просто один раз и лист не модифицируется. То есть это уже частный случай создания листов, меня не интересовали частные случаи, мне было нужно лишь показать, что я понимаю под пустым листом в доступной для всех, не только джаваистов, форме. Не надо придираться.[/quote:loych5mw]
А почему б не поучить, если вы не видите особой разницы между созданием кучи обьектов в цикле и созданием immutable обьекта один раз?
Не бывает мелочей в программизме, бывают только допустимые flaws[/quote:loych5mw]
Еще раз для особо непонятливых — частные случаи — это для имплементации. Моя цель была показать, что нужно вернуть пустой лист, и что бы вы не подумали, что пустой лист — это что то еще, кроме new ArrayList<>(), or new LinkedList<>() or any other implementation of List, я написала этот пример. Я не знаю, есть ли аналог Collections в C#, но я знаю, что new ArrayList<>() должно быть понятно. Это не код, это прояснение терминологии. И как после этого относиться к вашему опыту, если вы при малейшей возможности начинаете придираться и переходить на троллинг?
[quote="Ольга_":3mofhqjs]
Я вам на нескольких страницах написала, какая разница, статьи компетентных людей приводила — но для вас разницы нет.[/quote:3mofhqjs]
еще раз
В чем разница между
if(obj != null) и if(optional.isPresent())?
Вы внутрь isPresent загляните — там будет ровно та же проверка на нулл
Т.е., вы завернули проверку любого обьекта на нулл в отдельный класс, и говорите о драматической разнице?
нормальная реализация подобного выглядит так:
var veryFarProperty = objCanBeNull?.objCanBeNull.Prop1?.Prop1Prop2?.Prop1Prop2Prop3?.VeryFarProperty; — вот тут нет проверок на нулл, и ексепшн не выбросится
В этом суть монад, елки-палки, а не в проверке isPresent — это та же проверка на нулл, спрятанная внутри функции
[quote:3mofhqjs]Мужчина, я за последние 3 года со столькими программистами поработала, столько сеньоров повидала, которых пришлось учить писать чистый код и объяснять, что такое хорошо, и что такое плохо, что мне ваши года до лампочки, я сужу не по опыту, а по знаниям.[/quote:3mofhqjs]
И откуда ж вам про мои знания-то знать? Ваши — вы продемонстрировали; я лично в них вижу достаточно нерассуждающий догматизм. Эти сеньоры, о которых вы говорите, они ведь такие же, просто у них догмы постарше будут. Чем вы от них отличаетесь-то?
[quote="Ольга_":tfb0a8s9]
Еще раз для особо непонятливых — частные случаи — это для имплементации. Моя цель была показать, что нужно вернуть пустой лист[/quote:tfb0a8s9]
Для особо непонятливых — надо четко понимать, в каких случаях что возвращать, и быть точным в выражениях, пустые листы разные бывают
А для этого надо читать этот, как вы выразились, детсад на stackoverflow, и не считать, что вы уже все знаете
Как говорится, и умнее нас есть, а в Крестах сидят(ц)
[quote="Ольга_":2yjqz6pl]
[/quote:2yjqz6pl]
Уступала, согласна. Но мы живем сегодня, в сейчас есть Java 8 со streamом, который, по мнению людей, знающих и C#, и Java, C# не уступает. "Последние станут первыми".
линк — это не отдельная фича, это часть довольно-таки радикальной модификации дотнета, включающей в себя другие связанные с линком фичи, типа extension classes, anonymous classes, expression trees и проч. И все эти годы они не стояли на месте, так что догнать вряд ли уже получится.
Наверное, если брать чисто линк как средство манипуляции данными в коллекциях, может, и не уступает. Но это только часть
[quote="Ольга_":2ip4u1uk]статьи компетентных людей приводила[/quote:2ip4u1uk]
Кстати
Мне статьи компетентных людей — до лампочки; это повод попробовать разобраться самому. Это не катехезис, это всего лишь мнение
А для вас?
[quote="loco":10x7uar0][quote="Ольга_":10x7uar0]
Я вам на нескольких страницах написала, какая разница, статьи компетентных людей приводила — но для вас разницы нет.[/quote:10x7uar0]
еще раз
В чем разница между
if(obj != null) и if(optional.isPresent())?
Вы внутрь isPresent загляните — там будет ровно та же проверка на нулл
Т.е., вы завернули проверку любого обьекта на нулл в отдельный класс, и говорите о драматической разнице?
нормальная реализация подобного выглядит так:
var veryFarProperty = objCanBeNull?.objCanBeNull.Prop1?.Prop1Prop2?.Prop1Prop2Prop3?.VeryFarProperty; — вот тут нет проверок на нулл, и ексепшн не выбросится
В этом суть монад, елки-палки, а не в проверке isPresent — это та же проверка на нулл, спрятанная внутри функции
[quote:10x7uar0]Мужчина, я за последние 3 года со столькими программистами поработала, столько сеньоров повидала, которых пришлось учить писать чистый код и объяснять, что такое хорошо, и что такое плохо, что мне ваши года до лампочки, я сужу не по опыту, а по знаниям.[/quote:10x7uar0]
И откуда ж вам про мои знания-то знать? Ваши — вы продемонстрировали; я лично в них вижу достаточно нерассуждающий догматизм. Эти сеньоры, о которых вы говорите, они ведь такие же, просто у них догмы постарше будут. Чем вы от них отличаетесь-то?[/quote:10x7uar0]
Внутри optional проверка будет происходить автоматически, программисту писать код не надо. Когда программист видит объект, он не всегда проверит его на null — либо забудет, либо посчитает, что объект всегда должен присутствовать, либо еще по какой-то причине, NullPointerException не была бы такой распространенной ошибкой, если бы пропустить проверку на null не было так легко. Но когда программист видит не просто объект, а wrapper Optional — он понимает, что объекта может не быть, и поэтому проверит. С optional это очевидно, с обычным объектом — нет. В написании кода надо стремиться к тому, чтобы код был как можно более прозрачным, понятным, и декларируя Optional вы показываете тем, кто будет работать с вашим методом, что есть вероятность, что объекта не будет. Естественно, я не говорю, что всегда надо использовать Optional, но чаще всего это способ написать чистый код и избежать NullPointerException.
Мне не важно, что вы обо мне думаете, вы для меня не авторитет в программировании, извините. Сильные программисты не распределяют радиосигналы, а занимаются более интересными и высокооплачиваемыми проектами. Я вижу, что вы интересуетесь программированием, занимаетесь этим не только ради денег, вам это действительно нравится, но у вас есть определенный лимит, с вами сложно вести конструктивный диалог, вы придираетесь к незначительному и не замечаете (может, потому что не понимаете) существенное. Вы говорите — это плохо, потому что мне не нравится, а хотите узнать почему — сравните сами с другими языками. У меня лично сложилось мнение, что вы где-то что-то прочитали, где-то что-то услышали, благо что Джаву критикуют все, кому ни лень, включая самих джавистов, но в сути не разобрались и объяснить, что конкретно плохо, не можете. Это звучит очень по-дилетантски, поэтому у меня сформировалось соответствующее мнение.
[quote="loco":3hixx420][quote="Ольга_":3hixx420]статьи компетентных людей приводила[/quote:3hixx420]
Кстати
Мне статьи компетентных людей — до лампочки; это повод попробовать разобраться самому. Это не катехезис, это всего лишь мнение
А для вас?[/quote:3hixx420]
Для меня нет. Мне интересно мнение компетентных людей. Когда человек создает какую-то новую фичу, то интересно, какая причина побудила его создать эту фичу, что за этим стоит, какую проблему он пытался решить. Поэтому я стараюсь найти эту информацию, и не пренебрегаю статьями разработчиков языка, на котором пишу. А вот многие споры на stackoverflow мне действительно до лампочки.
Возможно, у вас сложилось мнение, что я читаю какую-то статью, мне кажется, что ее написал компетентный человек, и я делаю так, как он говорит. Это не так. Я умею анализировать самостоятельно, и перед тем, как принять решение принять определенный паттерн, я стараюсь узнать все его плюсы и минусы. В случае с optional я не нашла ни одного компетентного мнения по поводу плюсов использования null vs Optional. И сильные программисты, с которыми я работала, и разработчики Джавы рекомендуют употреблять optional, и я лично вижу в нем плюсы, которые я перечислила, и только один маленький минус. Минус может вырасти в большой при определенных имплементациях, поэтому и с Optional, естественно, надо быть осторожным. Но в большинстве простых случаев, например, как я привела — получить объект из базы данных, — он решает проблему и предпочтительнее null.
[quote="Ольга_":2bc8fhly]
Внутри optional проверка будет происходить автоматически, программисту писать код не надо. Когда программист видит объект, он не всегда проверит его на null — либо забудет, либо посчитает, что объект всегда должен присутствовать, либо еще по какой-то причине, NullPointerException не была бы такой распространенной ошибкой, если бы пропустить проверку на null не было так легко.[/quote:2bc8fhly]
Это в вашем мире
А я вот, сколько себя и коллег(разных) помню, это самое обычное дело — проверка на нулл(указателя, ссылки).
Вот вы — проверяете на нулл, или забываете?
[quote:2bc8fhly] Но когда программист видит не просто объект, а wrapper Optional — он понимает, что объекта может не быть, и поэтому проверит. С optional это очевидно, с обычным объектом — нет. [/quote:2bc8fhly]
А в жаве что, нету четкого разделения на value&reference types? Вроде есть. И любой ref type может быть нулл. Это очевидно, по-моему, это базовая база. Неочевидно это, если чел язык не знает, но тогда ему и optional не поможет
[quote:2bc8fhly]Естественно, я не говорю, что всегда надо использовать Optional, но чаще всего это способ написать чистый код и избежать NullPointerException.
[/quote:2bc8fhly]
Ну так это не панацея и не чистый код, это переусложненный код, т.к. в любом случае делается проверка на нулл, только во втором случае сложнее
нормальное использование Optional — это что-то вроде
Collection myResArray = getOptionalMyObject().map(MyObject::getMyResArray).orElse(Collection.emptyList());//извиняюсь, если неправильно написал, нету компилятора под рукой
[quote:2bc8fhly]Мне не важно, что вы обо мне думаете, вы для меня не авторитет в программировании, извините. Сильные программисты не распределяют радиосигналы, а
занимаются более интересными и высокооплачиваемыми проектами. [/quote:2bc8fhly]
Хы-хы
А написание комп. игр подойдет? Предсказание скачков акций на бирже? Управление роботами для производства процессоров?:) Что, по-вашему, серьезные проекты? 3д этот? ну так для вот этого — http://www.ibwave.com/en/ibwave-design-enterprise я в свое время 3д моделлер писал. Люблю похвастаться!!!
[quote:2bc8fhly]Я вижу, что вы интересуетесь программированием, занимаетесь этим не только ради денег, вам это действительно нравится, но у вас есть определенный лимит, с вами сложно вести конструктивный диалог, вы придираетесь к незначительному и не замечаете (может, потому что не понимаете) существенное.
[/quote:2bc8fhly]
Да, безусловно я придираюсь к мелочам, потому что мелочей в программинге не бывает
Нет, я безусловно замечаю и понимаю существенное, в нашем споре — это отсутствие разницы между проверкой != null и isPresent, т.к. это в любом случае проверка. Толковый программер не будет ее забывать, бестолковый — будет, вне зависимости от
Я понимаю вашу идею, мол, он увидит, что это не просто обьект, а Optional, и тут же задумается — дай-ка я проверю, а не пустой ли это обьект. Мне это предположение кажется довольно натянутым
[quote:2bc8fhly]Вы говорите — это плохо, потому что мне нравится, а хотите узнать почему — сравните сами с другими языками. У меня лично сложилось мнение, что вы где-то что-то прочитали, где-то что-то услышали, благо что Джаву критикуют все, кому ни лень, включая самих джавистов, но в сути не разобрались и объяснить, что конкретно плохо, не можете. Это звучит очень по-дилетантски, поэтому у меня сформировалось соответствующее мнение.[/quote:2bc8fhly]
Да, я и не скрываю, что жаву знаю плохо. Вернее, не так хорошо, как хотелось бы
Но по сути, мы спорили сперва о монадах — а функц. программирование я вроде знаю. Потом мы спорили про null vs empty obj — про это я тоже знаю. Далее, точность формулировок — про массивы. И это я знаю, т.к. коллекции не только в жаве есть!
Ну и последнее — про nullable obj vs Optional. Тут мои знания хромают, но достаточны, чтоб понять что isPresent — это замаскированная проверка на нулл
Так в чем же я дилетант?
Вас я, заметье, дилетантом не называю. Так может и вам стоило бы быть повежливее?
[quote="Ольга_":13qyuqmx]
Для меня нет. Мне интересно мнение компетентных людей. Когда человек создает какую-то новую фичу, то интересно, какая причина побудила его создать эту фичу, что за этим стоит, какую проблему он пытался решить. Поэтому я стараюсь найти эту информацию, и не пренебрегаю статьями разработчиков языка, на котором пишу. А вот многие споры на stackoverflow мне действительно до лампочки. [/quote:13qyuqmx]
Понятно
Программер, который не контрибьютит на stackoverflow, многое теряет. Хотя бы возможность понять, что он не такой умный, каким себя считает
Ну и многие разработчики даже и жавы вполне там обретаются. Вы еще скажите, что у вас на гитхабе проектов нету!
[quote:13qyuqmx]В случае с optional я не нашла ни одного компетентного мнения по поводу плюсов использования null vs Optional. И сильные программисты, с которыми я работала, и разработчики Джавы рекомендуют употреблять optional, и я лично вижу в нем плюсы, которые я перечислила, и только один маленький минус. Минус может вырасти в большой при определенных имплементациях, поэтому и с Optional, естественно, надо быть осторожным. Но в большинстве простых случаев, например, как я привела — получить объект из базы данных, — он решает проблему и предпочтительнее null.
[/quote:13qyuqmx]
Я ведь не спорю с тем, что стоит хм употреблять. Я говорю, что сама проверка isPresent это та же проверка на нулл, и это ломает саму идею отсутствия проверки
[quote="loco":no6eqts8]
Это в вашем мире
Не помню, чтобы по моей вине когда-то были NullPointerException. Но не отрицаю, что когда-то где-то могла забыть.
А я вот, сколько себя и коллег(разных) помню, это самое обычное дело — проверка на нулл(указателя, ссылки).
Вот вы — проверяете на нулл, или забываете?[/quote:no6eqts8]
Если скажу, что нет — вы поверите?
В работе сталкивалась часто. На первой работе в Ванкувере, как я уже сказала, один из первых багов — не проверили объект, возвращаемый из базы данных. Сегодня только читала документацию на работе о крупной планируемой модификации кода. На этой работе, в отличие от предыдущей, гораздо более серьезное отношение к коду и программисты в основном сильные, но сколько людей работало до нас, кто там как писал — в общем, в документации было написано, что одна из проблем, с которой придется столкнуться — во многих методах нет проверки на null, а модификация заключается в том, что определенный параметер будет возвращаться null. Так что пропускают, как видите.
[quote:no6eqts8]Ну так это не панацея и не чистый код, это переусложненный код, т.к. в любом случае делается проверка на нулл, только во втором случае сложнее[/quote:no6eqts8]
Этот код гораздо чище, чем возврат null. Я больше спорить об этом не буду. Я привела достаточно аргументов, не принимаете — ваше дело.
[quote:no6eqts8]
Хы-хы
А написание комп. игр подойдет? Предсказание скачков акций на бирже? Управление роботами для производства процессоров?:) Что, по-вашему, серьезные проекты? 3д этот? ну так для вот этого — http://www.ibwave.com/en/ibwave-design-enterprise я в свое время 3д моделлер писал. Люблю похвастаться!!! [/quote:no6eqts8]
Я сказала уже, что мне нравится в вас, что вы увлеченный программист, а не просто абы денег заработать, прийти домой и забыть. Но я уже объяснила, что в вас выдает ваши слабые стороны.
Написание игр у нас в универе было ординарными заданиями. На курсе Компьютерные игры мы писали даже на Unity3D с серьезной графикой. Предсказание скачков — это machine learning на Python? Я писала предсказание, какого типа пассажиры имели больше шансов на спасение на Титанике, просто развлечение и способ изучить пайтоновские библиотеки для machine learning, опять же игра с Monte Carlo simulation была проектом в универе — все это фигня, а вот большие проекты, distributed systems, big data, когда твоей программой пользуются миллионы людей, и тебе надо учесть все до мелочей — и scaling, и кэши, и multithreading, и network failures, и находить оптимальные алгоритмы, чтобы вся эта махина работала быстро и без ошибок в продакшн — вот это для меня challenge.
[quote="loco":elojsfof]
Понятно
Программер, который не контрибьютит на stackoverflow, многое теряет. Хотя бы возможность понять, что он не такой умный, каким себя считает
Ну и многие разработчики даже и жавы вполне там обретаются. Вы еще скажите, что у вас на гитхабе проектов нету![/quote:elojsfof]
Не контрибьютю, потому что считаю, что там есть более знающие программисты, чем я, которые помогут. Я вообще очень скромная, плюс у меня Impostor syndrome, просто здесь разошлась, потому что не вижу серьезных аргументов, которые могли бы меня стушевать. А вообще в жизни я склонна недооценивать свои способности. Мне обычно повышают самооценку окружающие, особенно когда выделают меня из многих кандидатов и дают джоб офер, а потом начинают со мной советоваться. Это очень круто и вселяет уверенность. Но давать советы на stackoverflow мне кажется еще рано. Сама я туда часто хожу, когда есть вопросы. Споры типа пустых объектов я считаю пустыми, но на многие вопросы там можно получить компетентный ответ. На гитхабе проекты есть, тут можете не волноваться.
[quote="Ольга_":kb4g8uu4]Так что пропускают, как видите.[/quote:kb4g8uu4]
я знаю
Но с нормальной qa такие баги ловятся на этапе разработки. Я же говорил уже, что есть такое мнение, что чем раньше оно случится, тем лучше — в продакшн не пойдет
[quote:kb4g8uu4][quote:kb4g8uu4]Ну так это не панацея и не чистый код, это переусложненный код, т.к. в любом случае делается проверка на нулл, только во втором случае сложнее[/quote:kb4g8uu4]
Этот код гораздо чище, чем возврат null. Я больше спорить об этом не буду. Я привела достаточно аргументов, не принимаете — ваше дело.
[/quote:kb4g8uu4]
Я вам говорю, что использование Optiona.isPresent как проверки существования возвращенного обьекта это неправильно, оно не для этого.
Ладно
Не верите мне — смотрите вашу же статью — http://www.oracle.com/technetwork/artic … 75753.html
You can also use the isPresent() method to find out whether a value is present in an Optional object. In addition, there’s a get() method that returns the value contained in the Optional object, if it is present. Otherwise, it throws a NoSuchElementException. The two methods can be combined, as follows, to prevent exceptions:
if(soundcard.isPresent()){
System.out.println(soundcard.get());
}
[b:kb4g8uu4]However, this is not the recommended use of Optional (it’s not much of an improvement over nested null checks), and there are more idiomatic alternatives, which we explore below.[/b:kb4g8uu4]
Мне ваши предосторожности напоминают одну контору, которая писала на с++, но запрещала программерам использовать арифметику указателей и прямые операции с памятью — потому что это опасно, и не очень опытные разработчики могут налажать:)
[quote:kb4g8uu4]Написание игр у нас в универе было ординарными заданиями. На курсе Компьютерные игры мы писали даже на Unity3D с серьезной графикой.[/quote:kb4g8uu4]
Unity — это готовый движок. A мы писали свой. И потом игру еще продавали. Есть разница между написанием задания по полугодичному курсу, и 2-х годичной разработкой игры на продажу.
[quote:kb4g8uu4]Предсказание скачков — это machine learning на Python?[/quote:kb4g8uu4]
Это софт, который автоматически торговал на бирже, на NYSE. Про HFT тогда не знали еще, по паттернам считали
Сами писали, не было тогда никаких библиотек для machine learning
Я об этом и толкую — вы говорите об использовании существующих библиотек, я — о написании этих библиотек. Это совсем разные задачи
[quote:kb4g8uu4]а вот большие проекты, distributed systems, big data, когда твоей программой пользуются миллионы людей, и тебе надо учесть все до мелочей — и scaling, и кэши, и multithreading, и network failures, и находить оптимальные алгоритмы, чтобы вся эта махина работала быстро и без ошибок в продакшн — вот это для меня challenge.[/quote:kb4g8uu4]
Это я понимаю
Но почему вы считаете, что исходники, например, автокада менее сложны, чем то, что вы описали? Там как бы knowledge base не покруче
[quote="Ольга_":6thptbtc][quote="loco":6thptbtc]
Понятно
Программер, который не контрибьютит на stackoverflow, многое теряет. Хотя бы возможность понять, что он не такой умный, каким себя считает
Ну и многие разработчики даже и жавы вполне там обретаются. Вы еще скажите, что у вас на гитхабе проектов нету![/quote:6thptbtc]
Не контрибьютю, потому что считаю, что там есть более знающие программисты, чем я, которые помогут. Я вообще очень скромная, плюс у меня Impostor syndrome, просто здесь разошлась, потому что не вижу серьезных аргументов, которые могли бы меня стушевать. А вообще в жизни я склонна недооценивать свои способности. Мне обычно повышают самооценку окружающие, особенно когда выделают меня из многих кандидатов и дают джоб офер, а потом начинают со мной советоваться. Это очень круто и вселяет уверенность. Но давать советы на stackoverflow мне кажется еще рано. Сама я туда часто хожу, когда есть вопросы. Споры типа пустых объектов я считаю пустыми, но на многие вопросы там можно получить компетентный ответ. На гитхабе проекты есть, тут можете не волноваться.[/quote:6thptbtc]
1 — вы вполне можете помочь, потому что вопрос может быть не замечен или будет достаточно специфическим, чтоб быстро нашелся отвечающий. Кроме того, даже если кто-то предложит лучшее решение — это тоже плюс, можно научиться новому.
2 — бесполезные споры полезны тем, что там часто речь идет о тонкостях имплементации различных программных концепций, как это сделано в языке/в разных языках и почему, плюс примеры из собственного опыта множества людей. В книгах такое не пишут.
3 — советы дают все кому не лень, даже откровенно дурацкие:) Так что не рано:)
4 — коммьюнити живет за счет контрибуторов, позиция "я лучше в стороне постою" имхо не очень правильная. Раз пользуемся — надо и отдавать