Информация об изменениях

Сообщение Re[7]: Замыкания и Reference Counting от 23.10.2024 1:05

Изменено 23.10.2024 1:06 vsb

Re[7]: Замыкания и Reference Counting
Здравствуйте, ·, Вы писали:

vsb>>Сейчас тоже требует. Просто это называется effectively final. Типа писать не обязательно, но оно подразумевается, менять ты её не можешь. Это ещё одна дурость.

·>Это не дурость, а минимизации wtf/LoC

Дурость, натуральная.

Во-первых никакой необходимости в этом всём вообще нет. Заменяем int x на int[] x = new int[1], все обращения к x на x[0] и готово, у нас с абсолютно тривиальным преобразованием работает изменение переменной из замыкания.

Во-вторых, даже если разработчики Java с чего-то решили, что теперь их миссия — zero overhead abstractions (ха-ха) и превращать под капотом переменную в массив это не ок, то никакой проблемы написать final у нужной переменной нет и это как раз уменьшает WTF/LoC. Т.е. необходимости ввода effectively final концепции не было никакой. Нужна тебе final переменная — ну и напиши final. Это как вводить effectively int концепцию — если не указали у переменной тип, то она будет считаться int-ом. Зачем? Какую проблему решает? Непонятно.

> В шарпе и js с этим налажали и там это классическая грабля.


Это вообще другая проблема и эту проблему так же легко исправить.
Re[7]: Замыкания и Reference Counting
Здравствуйте, ·, Вы писали:

vsb>>Сейчас тоже требует. Просто это называется effectively final. Типа писать не обязательно, но оно подразумевается, менять ты её не можешь. Это ещё одна дурость.

·>Это не дурость, а минимизации wtf/LoC

Дурость, натуральная.

Во-первых никакой необходимости в этом всём вообще нет. Заменяем int x на int[] x = new int[1], все обращения к x на x[0] и готово, у нас с абсолютно тривиальным преобразованием работает изменение переменной из замыкания.

Во-вторых, даже если разработчики Java с чего-то решили, что теперь их миссия — zero overhead abstractions (ха-ха) и превращать под капотом переменную в массив это не ок, то никакой проблемы написать final у нужной переменной нет и это как раз уменьшает WTF/LoC. Т.е. необходимости ввода effectively final концепции не было никакой. Нужна тебе final переменная — ну и напиши final. Это как вводить effectively int концепцию — если не указали у переменной тип, то она будет считаться int-ом. Зачем? Какую проблему решает? Непонятно.

> В шарпе и js с этим налажали и там это классическая грабля.


Это вообще другая проблема и эту проблему так же легко исправить. В Go, кстати, исправили в одной из последних версий.