LINUX.ORG.RU

Зачем нужен var в Java?

 , ,


1

2

Как многие уже знают, в Java решили ввести ключевое слово var. Драма разыгралась неслабая (хотя бы на хабре), но никто ещё не смог придумать случай, в котором этот var вообще имеет смысл использовать. Может, хотя бы здесь кто-то всё-таки сможет привести подобный пример?

★★★★
Ответ на: комментарий от anTaRes

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

крестовик?

MyTrooName ★★★★★
()
Ответ на: комментарий от FeyFre

И как этому способствует «var»? А никак.

Очевидно, у тебя нет нужного опыта.

DarkEld3r ★★★★★
()
Ответ на: комментарий от invy

Это я про вижалстудию и сисярп. Сисярп, имхо, является главным примером, как не надо делать ЯП. Микрософт вперде как всегда.

unt1tled ★★★★
()
Ответ на: комментарий от geek

Запросто:

<.button(^.`type` := "submit",
  ^.className := "btn btn-primary",
  ^.disabled := metadata.title.trim.isEmpty || saved,
  ^.onClick ==> saveScript(p),
  saved ?= (^.title := gettext("There's no changes to save")),
  gettext("Save"))

Нужно взять Скалу :)

anon1984
()
Последнее исправление: anon1984 (всего исправлений: 1)
Ответ на: комментарий от znenyegvkby

А вы что видите? Ключевое слово языка :)

Но по факту там — присвоение. А у присвоения уже есть свой оператор, зачем ещё ключевое слово вводить?
Зачем плодить новые сущности?

Все не так страшно

Всё не так однозначно.
Для Вас может и нет, а вот новичку придётся это всё понять, смириться с этим, и научится это правильно использовать

Укоренение в привычках — не есть хорошо

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

Когда вы найдете применение инструменту, то начнете им активно пользоваться. Если вы не видите возможностей для применения — это еще не значит что их нет.

А здесь вообще мегафейспалмище!
Я Вам говорю что неудобно забивать гвозди топором, в ответ слышу это...

Ну вам то, конечно же, виднее как лучше.

Мне виднее, что текущая реализация — говно. И я предлагаю свои варианты

I60R ★★
()

ITT 4 страницы обсуждения технологии известной всему образованному миру с 70х, доползшей наконец до Жавки.

anonymous
()
Ответ на: комментарий от I60R

Мне виднее, что текущая реализация — говно. И я предлагаю свои варианты

Это только ваше личное мнение.

Я Вам говорю что неудобно забивать гвозди топором

Это не топор, а добротный молоток. Я ж не виноват что у вас такой искаженный взгляд на вещи. var это просто ключевое слово, а вы раздули из него проблему невероятных масштабов, кароче из мухи слона, как говорится.

//P.S.: тыльной стороной топора очень сподручно забивать гвозди :)

znenyegvkby
()
Ответ на: комментарий от I60R

Это радует

Ну кстати да, до конца не ясно, поэтому может быть ее и не примут, вот тогда и будете радоваться и плясать. Но, конечно же, все может быть с точностью наоборот, я слежу за ситуацией, и непременно оповещу вас когда все прояснится :D

znenyegvkby
()
Ответ на: комментарий от znenyegvkby

Это только ваше личное мнение.

Не только моё, судя по срачу разгоревшемся в интернете вокруг темы

var это просто ключевое слово

это лезвие, которое делает из обычного молотка — топор

тыльной стороной топора очень сподручно забивать гвозди

в крышку гроба языка программирования Java.
А на стройке обухом гвозди не забивают

I60R ★★
()
Ответ на: комментарий от znenyegvkby

А где и кем всё это решается?
Меня туда пустят предложить свои безумные идеи на ломаном английском?

I60R ★★
()
Ответ на: комментарий от I60R

в крышку гроба языка программирования Java.

Еще раз — не драматизируйте. Ниша энтерпрайза как была за ней, так и останется. И даже если его введут, лично вы и ваша команда никуда не денетесь. Поплачете немного, и дальше будете работать. Инфа 146%.

А на стройке обухом гвозди не забивают

Еще как забивают. Вы просто на стройках не бывали, видимо. Ну или у вас стройки евро-стандарта :)

znenyegvkby
()
Ответ на: комментарий от I60R

Всё не так однозначно... вот новичку придётся это всё понять

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

anonymous
()
Ответ на: комментарий от I60R

в крышку гроба языка программирования Java

Не боись, легаси без var на твой век хватит.

anonymous
()
Ответ на: комментарий от znenyegvkby

Поплачете немного, и дальше будете работать. Инфа 146%.

Bменно этого я и не люблю, поэтому выбрал Java...

Еще как забивают

Но ведь не шалаш строим, а банки, государственные здания, торговые центры

I60R ★★
()
Ответ на: комментарий от I60R

Но ведь не шалаш строим, а банки, государственные здания, торговые центры

Можно подумать гвоздь забитый топором будет хуже сидеть :)

Bменно этого я и не люблю, поэтому выбрал Java...

Ну вот Java о вас и заботится, и даже в этом jpe об этом сказано, поэтому вы сможете писать даже так

var var = ...
Видите, сообщество думает о вас :)

znenyegvkby
()
Ответ на: комментарий от anonymous

Ну вот, если б я хотел пользоваться всякими заумными-наворочеными фичами, я бы пользовался крестами

I60R ★★
()
Ответ на: комментарий от unt1tled

Я даже больше тебе скажу. У меня monodevelop их отлаживает :D

invy ★★★★★
()
Ответ на: комментарий от I60R

http://fortune.com/2015/09/07/oracle-cuts-java-execs/

Да они поплакали просто, кто там реально ушел-то, ты не назвал имен. А теперь ответь мне честно, когда Гослинг сваливал потому что ему бонусы прикрыли, ты сильно опечалился? Заколачивал гвозди в гроб java? Это ж не серьезно. Желтизна очередная.

znenyegvkby
()
Ответ на: комментарий от znenyegvkby

Можно подумать гвоздь забитый топором будет хуже сидеть

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

var var = ...

Варварски поиздевались над языком.

I60R ★★
()
Ответ на: комментарий от I60R

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

Oh my god! Realy?!

znenyegvkby
()
Ответ на: комментарий от znenyegvkby

Reza Rahman, James Gosling, Cameron Purdy…
Какая разница почему они сваливают?
Люди уходят — значит что-то не в порядке.
Да, это печально

I60R ★★
()
Ответ на: комментарий от I60R

Reza Rahman, James Gosling, Cameron Purdy…

Это желтизна. Ты знаешь когда Гослинг свалил? И значешь почему? Зачем ты веришь всякому бреду? Не читай это больше. Прошу тебя :)

znenyegvkby
()
Ответ на: комментарий от I60R

Ну конечно, он свалил еще в апреле 10-го, вы ведь явно 6 лет назад считали жабу тортом. А тут, из-за какого то ключевого слова начали заколачивать гвозди в какой-то гроб :) Ну это ли серьезно?

znenyegvkby
()
Ответ на: комментарий от znenyegvkby

Очевидно, не использовать говно-библиотеки. Выше вертухай уже сказал — есть кучи вариантов, когда тип очевиден даже дебилу.

class Bar extends Foo {}
..
..
var list = new ArrayList<Bar>();
...
...
list = new LinkedList<Foo>();
...


Что очевидно «дебило», а что «компилятору»?

FeyFre ★★★★
()
Ответ на: комментарий от znenyegvkby

6 лет назад о Java я не знал вообще ничего

I60R ★★
()
Ответ на: комментарий от cdshines

Я, как джавист, за. Но есть наркоманы-старперы, которые до сих пор возмущаются, что джава куда-то слишком спешит и вот на 6-ке было всем уютно. У таких, конечно, будет подгорать, и они будут придумывать какие-то невменяемы примеры типа «у меня не получилось, поэтому все плохо», жевать необязательный кактус (по их мнению) и плакать. Короче, все в порядке.

Я, как наркоман-старпёр, голосую за Java 1.4. После неё пошла фигня какая-то.

Legioner ★★★★★
()
Ответ на: комментарий от FeyFre

адекватного применения

Ключевое слово — адекватного.
Честно — я даже не понял о чем ваш пример. Если вы прочтете соглашений на C#, вот оно

https://msdn.microsoft.com/en-gb/library/ff926074.aspx

Вы увидите две очевидные вещи, о которых я уже говорил выше:

  • Do not use var when the type is not apparent from the right side of the assignment.
  • Do not rely on the variable name to specify the type of the variable. It might not be correct.

Если для вас не очевидно — не используйте. И хотя в шарпе var ввели вместе с анон-типами, по сути для их поддержки, все равно эти правила будут работать и для var в жабе.

znenyegvkby
()
Ответ на: комментарий от Legioner

Так надо форкать и бекпортить важные заплатки и сидеть на ней, а не на лоре втыкать.

cdshines ★★★★★
()
Ответ на: комментарий от unt1tled

Слушай, я в 2007 как раз флешку потерял на 128 мегабайт, если найдешь там, передавай нам сюда в 2016, а мы тебя блямбы дебажить научим. Будет непривычно, но ты втянешься.

cdshines ★★★★★
()
Ответ на: комментарий от FeyFre
scala> val ll = new java.util.ArrayList[Int]()
ll: java.util.ArrayList[Int] = []

scala> val ll = new java.util.LinkedList[Int]()
ll: java.util.LinkedList[Int] = []

Пожалуйста, вот тебе все выводится.

Вот в таких случаях может быть полезно пользоваться Lists.new*List(), который интерфейс возвращает.

Хотя аргумент «дженерики писать короче будем» - это херня, потому что как раз с даймонд-оператором написать

Foo<Bar<Baz<Quux>>, O<M<G>>> wtf = new Foo<>(pam,pararam)

будет читабельнее, чем c

var wtf = new Foo<Bar<Baz<Quux>>, O<M<G>>>(pam, pararam)

Но это если конпелятор не выведет по аргументам, идеально так:

var wtf = new Foo<>(pam, pararam)

haters gonna hate.

cdshines ★★★★★
()
Ответ на: комментарий от znenyegvkby

Do not rely on the variable name to specify the type of the variable. It might not be correct.

Это вот хорошо. Сразу понятно, за кого microsoft принимает писателей на c#.

cdshines ★★★★★
()
Ответ на: комментарий от cdshines

Это вот хорошо. Сразу понятно, за кого microsoft принимает писателей на c#.

Как знал что вторую рекомендацию не надо было сюда запиливать. Поздно :)

znenyegvkby
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.