компилятор джавы оптимизирует сеттеры/геттеры, вместо вызовов они компилируются инлайн (если только это не более сложные чем присвоение методы которые могут быть скомпилированы как вызов). иными словами отсутствие сеттера ничего не даёт кроме несколько меньшего визуального шума.crypto5 wrote:Ну вот я считаю что для иногда писать кучу ненужного кода это premature optimization. При необходимости можно потом отрефакторить.rzen wrote:иногда сеттеры и геттеры помимо присвоений производят дополнительные пляски бубном, например проверяют правильность переданного значения переменной или вообще прячут тот факт что за ними переменной нет вообще, а значение возможно читается из присоединённого объекта (а этот получается как прокси). вариантов много разные. суть в том чтобы спрятать конкретику от пользователя.
JVM internals - what does the JVM do? — Ian Rogers
-
- Уже с Приветом
- Posts: 24375
- Joined: 18 Nov 2003 16:42
Re: JVM internals - what does the JVM do? — Ian Rogers
Don't code today what you can't debug tomorrow.
-
- Уже с Приветом
- Posts: 24375
- Joined: 18 Nov 2003 16:42
Re: JVM internals - what does the JVM do? — Ian Rogers
AccessType.FIELD позволяет обращаться к полям напрямую, но всё равно приходится помнить что перед вами может быть объект а может быть и прокси и приходится проверку на этот факт делать вручную. только в некоторых случаях (например при первичном создании объекта) можно быть уверенным что перед вами объект, что, вобщем, может оказаться удобным. но стоит ли экономия нескольких строк кода двух разных способов доступа к полям объекта в вашем коде? вам решать.crypto5 wrote:вроде не обязательно, кажется есть какой то AccessType.FIELD который говорить JPA работать с филдами а не с accessor-амиИнтеррапт wrote:А что если хочешь работать с JPA, где нельзя просто повесить аннотации на public instance variables, т.к. все равно обязательно нужны getters/setters.crypto5 wrote:А почему бы просто паблик поля не использовать?Интеррапт wrote:Ну чего ужас? Костыли они и есть костыли. Для тех, кто ненавидит сотни строчек с обьявлениями getXXX и setXXX.Леонид Ильич Брежнев wrote: Какой ужас.
при этом я абсолютно согласен что отсутствие в языке джава полноценной концепции properties, с синтезируемыми сеттерами/геттерами и синтаксисом присвоения это однозначный косяк. причём давно и активно обсуждаемый, насколько мне известно джависты у руля не хотят сдаваться. пожуём увидим, как говорит Интеррапт, может в джаве 9 это изменится
Don't code today what you can't debug tomorrow.
-
- Уже с Приветом
- Posts: 2119
- Joined: 27 Dec 1999 10:01
- Location: Воронеж -> Naperville, IL
Re: JVM internals - what does the JVM do? — Ian Rogers
А каким образоm в языках поддерживающих концепцию properties имплементируется инкапсуляция? Киньте ссылку на какую-нибудь статью плст, гуглить что-то лень.
-
- Уже с Приветом
- Posts: 63430
- Joined: 03 Nov 2004 05:31
- Location: RU -> Toronto, ON
Re: JVM internals - what does the JVM do? — Ian Rogers
http://stackoverflow.com/questions/3739 ... properties
Encapsulating data is not about hiding it from the client of the class or making it unaccessible, it's about ensuring a consistent interface and internal object state.
Let's say you have an object representing a stick shift car, and a property to set the speed. You probably know that you should shift gears in between speed intervals, so that's where encapsulation comes in.
Instead of simply making the property public, thus allowing public access without any verification, you can use property getters and setters in C#:
Not everyone believes what I believe but my beliefs do not require them to.
-
- Уже с Приветом
- Posts: 24375
- Joined: 18 Nov 2003 16:42
JVM internals - what does the JVM do? — Ian Rogers
Montchik wrote:А каким образоm в языках поддерживающих концепцию properties имплементируется инкапсуляция? Киньте ссылку на какую-нибудь статью плст, гуглить что-то лень.
Code: Select all
obj.property = value
Code: Select all
obj.setProperty(value)
Don't code today what you can't debug tomorrow.
-
- Уже с Приветом
- Posts: 2119
- Joined: 27 Dec 1999 10:01
- Location: Воронеж -> Naperville, IL
Re: JVM internals - what does the JVM do? — Ian Rogers
Ага, то есть если я определю сеттер(setGear()) для проперти (gear), то он будет использоваться, а если не определю - то компилятор его сгенерит. А что, удобно. Исходный код чище получается. А в Java разве нельзя того же эффекта с помощью annotations добиться? Что-то типа: @Property private int gear;
-
- Уже с Приветом
- Posts: 24375
- Joined: 18 Nov 2003 16:42
JVM internals - what does the JVM do? — Ian Rogers
можно, этим и занимается упомянутый Интерраптиком ломбок.Montchik wrote:Ага, то есть если я определю сеттер(setGear()) для проперти (gear), то он будет использоваться, а если не определю - то компилятор его сгенерит. А что, удобно. Исходный код чище получается. А в Java разве нельзя того же эффекта с помощью annotations добиться? Что-то типа: @Property private int gear;
Don't code today what you can't debug tomorrow.
-
- Уже с Приветом
- Posts: 2119
- Joined: 27 Dec 1999 10:01
- Location: Воронеж -> Naperville, IL
Re: JVM internals - what does the JVM do? — Ian Rogers
Посмотрел я на этот ломбок. Проект в начальной стадии еще...
Было бы неплохо если бы в Java появились стандартные аннотации для этого. Типа как JSTL для JSP. И лучше конечно пораньше, чем в 9й версии.
Было бы неплохо если бы в Java появились стандартные аннотации для этого. Типа как JSTL для JSP. И лучше конечно пораньше, чем в 9й версии.
-
- Уже с Приветом
- Posts: 24375
- Joined: 18 Nov 2003 16:42
JVM internals - what does the JVM do? — Ian Rogers
раньше девятой врядли, седьмая уже вышла, восьмая для новых фич закрыта.Montchik wrote:Посмотрел я на этот ломбок. Проект в начальной стадии еще...
Было бы неплохо если бы в Java появились стандартные аннотации для этого. Типа как JSTL для JSP. И лучше конечно пораньше, чем в 9й версии.
Не обязательно аннотации, лучше бы фичей синтаксиса языка.
Don't code today what you can't debug tomorrow.
-
- Уже с Приветом
- Posts: 2119
- Joined: 27 Dec 1999 10:01
- Location: Воронеж -> Naperville, IL
Re: JVM internals - what does the JVM do? — Ian Rogers
Блин, к девятой версии энтузазисты успеют налабать несколько таких ломбоков. Опять придется тратить время на мертворожденные фреимворки, написанные пьяными студентами на коленках их боевых подруг.
-
- Уже с Приветом
- Posts: 24375
- Joined: 18 Nov 2003 16:42
JVM internals - what does the JVM do? — Ian Rogers
вот изза такого соплежевания я в своё время отошёл от жавы. Вроде стало меняться к лучшему. Тьфу тьфу.Montchik wrote:Блин, к девятой версии энтузазисты успеют налабать несколько таких ломбоков. Опять придется тратить время на мертворожденные фреимворки, написанные пьяными студентами на коленках их боевых подруг.
Don't code today what you can't debug tomorrow.
-
- Уже с Приветом
- Posts: 2119
- Joined: 27 Dec 1999 10:01
- Location: Воронеж -> Naperville, IL
Re: JVM internals - what does the JVM do? — Ian Rogers
На самом деле не все так плохо. Просто надо старательно и аккуратно отделять зерна от плевел и будет щастье.
-
- Уже с Приветом
- Posts: 17281
- Joined: 07 Sep 2011 10:05
- Location: Seattle, WA
Re: JVM internals - what does the JVM do? — Ian Rogers
Смотря, что именно там в начальной стадии. Проекту несколько лет уже. Всякие getters, setters, data и т.п. там уже давно и все хорошо работает.Montchik wrote:Посмотрел я на этот ломбок. Проект в начальной стадии еще...
Было бы неплохо если бы в Java появились стандартные аннотации для этого. Типа как JSTL для JSP. И лучше конечно пораньше, чем в 9й версии.
-
- Уже с Приветом
- Posts: 2119
- Joined: 27 Dec 1999 10:01
- Location: Воронеж -> Naperville, IL
Re: JVM internals - what does the JVM do? — Ian Rogers
Первичный признак "начальной стадии" выделен на скриншоте. Ну и второй момент это отсутствие документации. Я не говорю, что этот фреимворк плохой или там полно багов. Не вкурсе я, ибо не использовал. Но имхо выглядит сыровато, а когда это до ума доведут, в саму Java уже могут быть включены основные фичи.
You do not have the required permissions to view the files attached to this post.
-
- Уже с Приветом
- Posts: 12017
- Joined: 08 Sep 2006 20:07
- Location: Силиконка
Re: JVM internals - what does the JVM do? — Ian Rogers
Ё-моё, геттеры-сеттеры.
Я про многословность немного другое имел в виду. Ну типа (кстати, подскажите - может это можно уже как-то сделать? Я Java не знаю, в-принципе): нельзя из функции несколько значений вернуть, нельзя функцию swap() написать (ну или tuple assignment). Даже то, что для hello word программы нужно класс рожать, как-то странно очень.
А геттеры-сеттеры - тут проблема не в языке, а в том, что вы от него хотите. Если автоматически чем-то там нагенерите, код от этого умнее не станет.
Я про многословность немного другое имел в виду. Ну типа (кстати, подскажите - может это можно уже как-то сделать? Я Java не знаю, в-принципе): нельзя из функции несколько значений вернуть, нельзя функцию swap() написать (ну или tuple assignment). Даже то, что для hello word программы нужно класс рожать, как-то странно очень.
А геттеры-сеттеры - тут проблема не в языке, а в том, что вы от него хотите. Если автоматически чем-то там нагенерите, код от этого умнее не станет.
Мир Украине. Свободу России.
-
- Уже с Приветом
- Posts: 12017
- Joined: 08 Sep 2006 20:07
- Location: Силиконка
Re: JVM internals - what does the JVM do? — Ian Rogers
Хи-хи. Первый раз в интернеты зашли?dotcom wrote:Никак не хотел разводить флейм.
Мир Украине. Свободу России.
-
- Уже с Приветом
- Posts: 4195
- Joined: 27 Apr 2011 03:43
- Location: Сергели ->Chicago
Re: JVM internals - what does the JVM do? — Ian Rogers
вернуть List или HashMap или другой класс с кучей значенийM. Ridcully wrote:Ё-моё, геттеры-сеттеры.
Я Java не знаю, в-принципе): нельзя из функции несколько значений вернуть.
Last edited by valchkou on 23 Jul 2012 19:22, edited 1 time in total.
-
- Уже с Приветом
- Posts: 17281
- Joined: 07 Sep 2011 10:05
- Location: Seattle, WA
Re: JVM internals - what does the JVM do? — Ian Rogers
Ну вам виднееMontchik wrote:Не вкурсе я, ибо не использовал. Но имхо выглядит сыровато
На самом деле какая там еще документация нужна? Показан код с lombok и показан аналогичный vanilla Java код, который генерится, с комментариями автора. Если кто-то не сможет в таком разобраться - ну так значит ему этот фреймворк и не нужен.
Так вы расскажите, что там до ума доводить то нужно? Веб сайт красивее переделать? А так все хорошо работает - новые фичи добавляет, баги для новых фич оперативно фиксят.Montchik wrote:а когда это до ума доведут, в саму Java уже могут быть включены основные фичи.
А насчет, что в Джаву будут включены такие фичи, то ждите, ждите. Учитывая, что Java 8 выйдет только через год и никаких конкретных планов по поводу Java 9 нет (и еще не факт, что туда такое добавят), то ждать вам как минимум года 3.
-
- Уже с Приветом
- Posts: 24375
- Joined: 18 Nov 2003 16:42
Re: JVM internals - what does the JVM do? — Ian Rogers
класс рожать это не изменится, джава это не перл, на таких вещах никто экономить не будет.M. Ridcully wrote:Ё-моё, геттеры-сеттеры.
Я про многословность немного другое имел в виду. Ну типа (кстати, подскажите - может это можно уже как-то сделать? Я Java не знаю, в-принципе): нельзя из функции несколько значений вернуть, нельзя функцию swap() написать (ну или tuple assignment). Даже то, что для hello word программы нужно класс рожать, как-то странно очень.
А геттеры-сеттеры - тут проблема не в языке, а в том, что вы от него хотите. Если автоматически чем-то там нагенерите, код от этого умнее не станет.
что касается работы с кортежами это тоже не случится, какими бы удобными они ни были. кортежи это из другой вселенной. если сеттеры/геттеры появятся в 9тке то кортежи в 99тке
Don't code today what you can't debug tomorrow.
-
- Уже с Приветом
- Posts: 12017
- Joined: 08 Sep 2006 20:07
- Location: Силиконка
Re: JVM internals - what does the JVM do? — Ian Rogers
Ух ты, запахло дачным подвалом и пачками журналов "Наука и Жизнь"...rzen wrote:с кортежами
Мир Украине. Свободу России.
-
- Уже с Приветом
- Posts: 24375
- Joined: 18 Nov 2003 16:42
Re: JVM internals - what does the JVM do? — Ian Rogers
M. Ridcully wrote:Ух ты, запахло дачным подвалом и пачками журналов "Наука и Жизнь"...rzen wrote:с кортежами
Don't code today what you can't debug tomorrow.
-
- Уже с Приветом
- Posts: 4637
- Joined: 24 Oct 2009 01:38
- Location: Chicago ;-) -> SFBA!
Re: JVM internals - what does the JVM do? — Ian Rogers
Меня больше всего в джаве бесит отсутствие type inference и лямбд. А так со всем остальным можно жить.valchkou wrote:вернуть List или HashMap или другой класс с кучей значенийM. Ridcully wrote:Ё-моё, геттеры-сеттеры.
Я Java не знаю, в-принципе): нельзя из функции несколько значений вернуть.
In vino Veritas!
-
- Уже с Приветом
- Posts: 9035
- Joined: 25 Oct 2011 19:02
- Location: SVO->ORD->SFO
Re: JVM internals - what does the JVM do? — Ian Rogers
Это было больше в "Кванте".M. Ridcully wrote:Ух ты, запахло дачным подвалом и пачками журналов "Наука и Жизнь"...rzen wrote:с кортежами
Возвращаясь к теме плохой Жабы. Меня больше всего забавляет, сколько фреймворков создано вокруг Java, чтобы добавить динамические типы в язык, а в Javascript каждый фреймворк в то же время пытается добавить классы и библиотеки. При этом в последней редакции ECMA собирались ввести (опять) классы. Торпедировали. Догадайтесь кто. Не подглядывать в Eich'овский блог!
-
- Уже с Приветом
- Posts: 4379
- Joined: 20 Jun 2001 09:01
Re: JVM internals - what does the JVM do? — Ian Rogers
Да и в научной (не популярной) литературе было много до начала конца империи. Приятно вспомнитьdotcom wrote:Это было больше в "Кванте".M. Ridcully wrote:Ух ты, запахло дачным подвалом и пачками журналов "Наука и Жизнь"...rzen wrote:с кортежами
-
- Уже с Приветом
- Posts: 4195
- Joined: 27 Apr 2011 03:43
- Location: Сергели ->Chicago
Re: JVM internals - what does the JVM do? — Ian Rogers
проект был бы более популярен если бы не "м"Montchik wrote:Посмотрел я на этот ломбок