Как много нам открытий чудных...

Jun 14, 2016 17:07

Познакомилась сегодня с Java. Пребываю в некотором изумлении.
Read more... )

этот безумный мир

Leave a comment

l_sylvanas June 14 2016, 16:09:06 UTC
А как там заводятся эти объекты? Мне кажется, что должно было что-то все-таки произойти помимо просто Integer x = new Integer(5); Integer y = new Integer(5);. Какой-нибудь хитрый боксинг-анбоксинг?..

Я на джаве не пишу никогда, поэтому не сталкивалась с этим, но в принципе все эти вещи, конечно, нужны (Integer class и пр.), но тогда и пользоваться ими нужно соответственно. Если у тебя класс, то и не надо писать Integer x = 5, надо использовать new? Наверное.

На самом деле понимаю твои чувства, разумеется, всецело :). Я бы с ума сошла, наверное :).

Reply

tapka June 14 2016, 17:08:13 UTC
Я сварщик не настоящий, яву вижу в первый раз. Про боксинг только вот уже после, на stakeoverflow прочитала.

В нашем случае нужно было завести эти переменные как тривиальный int и все было бы хорошо. Не знаю, зачем она завела их как объект Integer, нужды в этом никакой не было. Чтоб работало так, как есть надо было бы сравнивать i.value==j.value видимо.

Upd. А вернее надо видимо i.equals(j) и пусть уж объект сам внутри себя сравнивает.

Reply

l_sylvanas June 14 2016, 17:48:46 UTC
Ох, equals... Да, там полно чудных открытий. Например, вот тоже послужило поводом для "веселья" многих начинающих на джаве:
http://stackoverflow.com/questions/513832/how-do-i-compare-strings-in-java

Однажды я целый день искала баг в коде на C#, и там в итоге тоже оказалось дело в том, что были поиспользованы всякие хитрые модные фичи без понимания, зачем :). Вполне типичный случай. Ну, я сама горазда, конечно, не хочу ничего сказать :).

Reply

green_fr June 15 2016, 07:44:35 UTC
Я бы скорее сказал, что раз уж отказались от поинтеров, то нефиг вообще разрешать операцию == на объектах. Ну или как VB - назначать одно из свойств объекта свойством по умолчанию и сравнивать его, когда клиент просит сравнить объект (ужасное решение, но всяко лучше, чем сравнивать поинтеры).

Reply

tapka June 15 2016, 08:15:55 UTC
Я ж свой комментрарий со стороны пользователя языка написала. У тебя глобальный подход :)

Reply

green_fr June 15 2016, 08:23:28 UTC
С точки зрения пользователя - я за 20 лет ни разу не пользовался классом Integer :-)

Reply

tapka June 15 2016, 08:48:23 UTC
Я подозреваю, что переписавшая код коллега не имела особого опыта с явой и программированием вообще.
В дотнетовском коде у нас было Integer, ну и она сделала Integer.

Reply

green_fr June 15 2016, 09:06:39 UTC
Очевидно. Ты знакома с сайтом http://thedailywtf.com/ ? Там часто _такие_ перлы встречаются. Классическое if (a.toString().length() == 4) - это не шутка, это реально попадающийся кусок кода.

Reply

green_fr June 15 2016, 09:09:13 UTC
Я как-то раз должен был переписать огромный кусок с VBA на MatLab. Ты не поверишь, но да - я просто скопировал код, а потом массовой заменой попытался сделать так, чтобы он заработал. И он заработал :-) Как ты понимаешь, при таком подходе нам уже не до мелочей.

Reply


Leave a comment

Up